我有一个来自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个条目。
非常感谢您的帮助!
答案 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'];
}
}