正在与这个似乎一如既往的斗争。
我有一个数组:
$url_array
它包含以下信息:
Array (
[ppp] => Array (
[0] => stdClass Object (
[id] => 46660
[entity_id] => 0
[redirect_url] => http://www.google.com
[type] => Image
)
[1] => stdClass Object (
[id] => 52662
[entity_id] => 0
[pixel_redirect_url] => http://www.yahoo.com
[type] => Image
)
[2] => stdClass Object (
[id] => 53877
[entity_id] => 0
[redirect_url] => http://www.msn.com
[pixel_type] => Image
)
)
[total_count] => 3
)
我需要遍历它,并为每个变量做些事情。我可以让这个工作:
foreach ($piggies_array as $key => $value) {
$id = $value[0]->id;
$redirect_url = $value[0]->redirect_url; }
毫不奇怪,它只是回应了这些变量的第一个值,但无论我尝试什么,我都无法让它循环:
$value->redirect_url;
$value=>redirect_url;
我将不胜感激。
答案 0 :(得分:8)
这应该可以解决问题:
foreach ($url_array['ppp'] as $key => $object) {
echo $object->redirect_url;
}
答案 1 :(得分:1)
你需要遍历数组两次。
foreach($piggies as $piggy) {
foreach($piggy as $key=>$value) {
$id = $value->id;
$redirect_url = $value->redirect_url;
}
}
答案 2 :(得分:0)
你在做$ id = $ value [0] - > id,它只会执行0元素的语句
你需要一个厕所
for($i = 0; $i < count($piggies_array['ppp']); $i++)
{
$id = $value[$i]->id;
$redirect_url = $value[$i]->redirect_url;
}
答案 3 :(得分:0)
您的数组通过调用$value[0]
包含另一个数组,您只需要第二个数组中的第一个项目。你需要两个循环,不要忘记值可能不是数组:
foreach ($piggies as $var)
{
if (is_array($var))
{
foreach ($var as $obj)
{
echo $obj->redirect_url;
}
}
else
{
echo $var;
}
}
以上(未经测试)将输出每个URL,并且还将输出第一个数组的总计数项。
答案 4 :(得分:0)
您正在迭代数组的第一个维度,该维度只有"ppp"
个元素。检查你的代码,当你有3个元素时,你会发现你实际上是在询问数组的第一个元素。
您需要做的是,迭代到对象数组($url_array["ppp"]
)。
如果您对实际迭代的内容有疑问,那么开始调试它的好方法是打印每个迭代步骤。如果您使用已发布的示例执行此操作,您将看到:
Array( [0] => stdClass [...], [1] => stdClass [...] ... )
这样做:
foreach ($piggies_array as $key => $value) {
var_dump($value);
}
看着这个,你会自动发现你的问题所在。所以,将其改为:
foreach ($piggies_array['ppp'] as $key => $value) {
var_dump($value);
}
您将获得所需的结果:
Object ( id: ... )
Object ( id: ... )
Object ( id: ... )
祝你好运!
答案 5 :(得分:0)
这样循环(假设$piggies_array
与您转储的$url_array
相同):
foreach ($piggies_array['ppp'] as $key => $value) {
$id = $value->id;
$redirect_url = $value->redirect_url;
}
并注意因为'ppp'数组中的某些项目没有属性redirect_url(而第二个有一个pixel_redirect_url属性。