PHP,遍历多个数组 - 一些数组只有 1 个结果
PHP, Looping through mulitple arrays - some arrays only have 1 result
我正在使用 Zillow API 对代理列表进行 return 评论。我有一个 foreach
循环,然后提取每个代理的评论列表。该列表被 return 编辑为 JSON。然后我 运行 在 JSON 结果上循环 foreach
以单独显示评论。一切都很好,除了一个特定的代理只有 1 个评论并且它抛出 foreach
错误。
这是一个非常简单的例子return:
如果代理有多个评论:
array(
[0] => Array (
[reviewer] => name,
[reviewerLink] => link
),
[1] => Array (
[reviewer] => name,
[reviewerLink => link
)
)
如果代理只有一个评论:
array([reviewer] => name [reviewerLink] => link)
我试过使用 count()
,但是在只有 1 个评论的数组中,它计算了总键数,因为没有索引。
我需要一种简单的方法来区分数组,因此我不会在只有 1 个评论的代理上使用 foreach
循环。
有没有办法强制数组有索引?或者另一种区分数组的方法?
如果您只有一篇评论,则关键字 reviewer
存在。所以如果你只有一个或多个,你可以用函数array_key_exists
检查它。
试试这个代码示例:
if (array_key_exists('reviewer', $array)) {
// only one review
} else {
// more reviews
// do the foreach
}
根据documentation,有一个reviewCount
字段作为结果集的一部分,所以在foreach
之前检查这个,如果只有一项则将其转换为数组...
if ( $json['reviewCount'] == 1 ) {
$array = [$array];
}
或者如果您的 json 是一个对象...
if ( $json->reviewCount == 1 ) {
$array = [$array];
}
这意味着所有版本都是 foreach 的一系列评论。
尝试判断是否为多维数组,使用count($agent, 1);
,会递归计算数组。
因此,如果 count($agent, 1);
小于 3,则 $agent 有 1 个评论。
$ag1 =[
0 =>[
'reviewer' => 'name',
'reviewerLink' => 'link'
],
1 =>[
'reviewer' => 'name',
'reviewerLink' => 'link'
]
];
$ag2 =[
'reviewer' => 'name',
'reviewerLink' => 'link'
];
echo count($ag1, 1); // 6
echo count($ag2, 1); // 2
只需检查:
if (count($agent, 1) <3) {
// only one review
} else {
// more reviews
// do the foreach
}
我正在使用 Zillow API 对代理列表进行 return 评论。我有一个 foreach
循环,然后提取每个代理的评论列表。该列表被 return 编辑为 JSON。然后我 运行 在 JSON 结果上循环 foreach
以单独显示评论。一切都很好,除了一个特定的代理只有 1 个评论并且它抛出 foreach
错误。
这是一个非常简单的例子return:
如果代理有多个评论:
array(
[0] => Array (
[reviewer] => name,
[reviewerLink] => link
),
[1] => Array (
[reviewer] => name,
[reviewerLink => link
)
)
如果代理只有一个评论:
array([reviewer] => name [reviewerLink] => link)
我试过使用 count()
,但是在只有 1 个评论的数组中,它计算了总键数,因为没有索引。
我需要一种简单的方法来区分数组,因此我不会在只有 1 个评论的代理上使用 foreach
循环。
有没有办法强制数组有索引?或者另一种区分数组的方法?
如果您只有一篇评论,则关键字 reviewer
存在。所以如果你只有一个或多个,你可以用函数array_key_exists
检查它。
试试这个代码示例:
if (array_key_exists('reviewer', $array)) {
// only one review
} else {
// more reviews
// do the foreach
}
根据documentation,有一个reviewCount
字段作为结果集的一部分,所以在foreach
之前检查这个,如果只有一项则将其转换为数组...
if ( $json['reviewCount'] == 1 ) {
$array = [$array];
}
或者如果您的 json 是一个对象...
if ( $json->reviewCount == 1 ) {
$array = [$array];
}
这意味着所有版本都是 foreach 的一系列评论。
尝试判断是否为多维数组,使用count($agent, 1);
,会递归计算数组。
因此,如果 count($agent, 1);
小于 3,则 $agent 有 1 个评论。
$ag1 =[
0 =>[
'reviewer' => 'name',
'reviewerLink' => 'link'
],
1 =>[
'reviewer' => 'name',
'reviewerLink' => 'link'
]
];
$ag2 =[
'reviewer' => 'name',
'reviewerLink' => 'link'
];
echo count($ag1, 1); // 6
echo count($ag2, 1); // 2
只需检查:
if (count($agent, 1) <3) {
// only one review
} else {
// more reviews
// do the foreach
}