如何处理多个&的PHP-Array;一个项目

时间:2018-04-19 20:35:16

标签: php arrays foreach

我有一个来自API的JSON,它被转换为带有json_decode()的PHP数组。

包含一个项目的数组:

    Array
    (
        [commentID] => 11
        [authorIDFK] => 1
        [comment] => Nice
    )

包含多个主题的数组:

Array
    (
        [0] => Array
            (
                [commentID] => 11
                [authorIDFK] => 1
                [comment] => Nice
            )

        [1] => Array
            (
                [commentID] => 15
                [authorIDFK] => 2
                [comment] => Great
            )

    )

要处理数组我有类似

的内容
foreach($comments as $comment) {
   echo $comment['comment'];
}

但是如果数组只有一个项目,则无法处理。任何想法如何实现这一目标?如果我在1项数组上使用count(),它会计算3个条目。

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您可以测试$comments = ['commentID' => 11, 'authorIDFK' => 1, 'comment' => 'Nice']; if (!isset($comments[0])) $comments=[$comments]; foreach($comments as $comment) { echo $comment['comment']; } 的存在(使用isset()),否则,将数组包装到另一个数组中。所以,你将得到相同的格式:

  renderPost = ({id, titre, contenu, mylink}, i) => {
    return (
      <View
        key={id}
        style={styles.post}
      >
        <View style={styles.postContent}>
          <Text>
            {titre}
          </Text>
          <Text style={styles.postBody}>
            {contenu}
          </Text>
          <Button
          style={styles.paragraph}
          title="Voir le site."
          onPress={() => Expo.WebBrowser.openBrowserAsync(mylink)}
          />
          <Text>{"\n\n"}</Text>
        </View>
      </View>
    )
  }

答案 1 :(得分:0)

有这样的功能:

function isAssoc(array $arr)
{
    if (array() === $arr) return false;
    return array_keys($arr) !== range(0, count($arr) - 1);
}

现在当你获得数据时,

if ($this->isAssoc($data)) {
    // single assoc array
    echo $data['comment'];
}
else {
   // indexed array
   foreach($data as $comment{
       echo $comment['comment'];
    }
}