PHP foreach循环多维数组

时间:2015-09-29 08:42:32

标签: php arrays foreach

对多维数组有点困难。我缩短了它,但阵列看起来像这样

array(192) {
    ["count"]=> int(191)
        [0]=>array(124) {
            [11]=>string(10) "usnchanged"
                ["homemta"]=>array(2) {
                  ["count"]=>int(1)
                  [0]=>string(206) "Some String"
                }
            [12]=>string(7) "homemta"
                ["proxyaddresses"]=>array(2) {
                  ["count"]=>int(1)
                  [0]=>string(46) "SMTP:remove=email@email.com"
                }
        }
    }
}

我正在尝试获取将在proxyaddresses下列出的电子邮件地址。我现在正在做的是:

for($i=0; $i<$data["count"]; $i++) {
    foreach($data[$i]["proxyaddresses"] as $object) {
        print_r($object);   
    }
}

这可以获得我需要的数据,但在所有数据之间,我会收到很多警告,比如

  

注意:未定义的索引:第88行的index.php中的proxyaddresses

     

警告:在index.php中为foreach()提供的参数无效   88

所以我认为它不喜欢什么。如何基于上面的数组结构正确地进行循环?

由于

2 个答案:

答案 0 :(得分:2)

这是因为每个循环都不存在proxyaddresses元素。您必须检查是否已设置以避免使用php isset()函数发出警告。

for($i=0; $i<$data["count"]; $i++) {
  if(isset($data[$i]["proxyaddresses"])){
    foreach($data[$i]["proxyaddresses"] as $object) {
      print_r($object);   
    }
  }
}

答案 1 :(得分:1)

for($i=0; $i<$data["count"]; $i++) {
    if(!isset($data[$i]["proxyaddresses"])) continue;
    foreach($data[$i]["proxyaddresses"] as $object) {
        print_r($object);   
    }
}