2015-09-29 3 views
1

с небольшим затруднением с многомерным массивом. Я укоротил, но массив выглядит следующим образомPHP foreach loop на многомерном массиве

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:[email protected]" 
       } 
     } 
    } 
} 

Я пытаюсь получить адреса электронной почты, которые будут перечислены под ProxyAddresses. То, что я делаю в данный момент следующие:

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

Это заставляет меня данные мне нужно, но между ними все данные, которые я получаю много предупреждений, как

Notice: Undefined индекс: ProxyAddresses в index.php в строке 88

Предупреждение: Неверный аргумент поставляются для Еогеасп() в index.php на линии

Я полагаю, что это не нравится. Как бы я правильно сделал цикл на основе указанной структуры массива?

Благодаря

+1

Установите условие if с помощью array_key_exists перед запуском foreach. – MaK

ответ

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
for($i=0; $i<$data["count"]; $i++) { 
    if(!isset($data[$i]["proxyaddresses"])) continue; 
    foreach($data[$i]["proxyaddresses"] as $object) { 
     print_r($object); 
    } 
} 
Смежные вопросы