Не могу перебрать массив в PHP - PullRequest
0 голосов
/ 31 декабря 2018

У меня есть массив, который выглядит следующим образом ...

array(3) {
  [0]=>
  array(1) {
    [0]=>
    array(1) {
      ["@attributes"]=>
      array(1) {
        ["data"]=>
        string(23) "football games on today"
      }
    }
  }
  [1]=>
  array(1) {
    [0]=>
    array(1) {
      ["@attributes"]=>
      array(1) {
        ["data"]=>
        string(8) "football"
      }
    }
  }
  [2]=>
  array(1) {
    [0]=>
    array(1) {
      ["@attributes"]=>
      array(1) {
        ["data"]=>
        string(14) "football today"
      }
    }
  }
}

и т. Д.Обычно, я просто перебираю этот массив, чтобы получить нужные мне данные, которые будут выглядеть следующим образом ...

$x=0;
foreach($array as $a){
	echo $a[$x][0]['@attributes']['data'].'<br>';
$x++;	
}

Но по какой-то причине этот очень простой цикл foreach не будет выводить данные, как я ожидал.Цикл ничего не возвращает.Я добавил

$x=0;
foreach($array as $d){
	echo $d[$x][0]['@attributes']['data'].'<br>';
  echo $x.'<br>';
$x++;	
}

echo $ x;строка в код, и он будет отображать возрастающее значение x, так что я знаю, правильно ли проходит цикл через массив.

Это были очень долгие дни кодирования, так что, может быть, я просто перегорел и упустил кое-что действительно простое.Но я этого не вижу.Спасибо за любую помощь.Это высоко ценится.

1 Ответ

0 голосов
/ 31 декабря 2018

Если у вас получились глубоко вложенные массивы, вы можете собрать ключи и значения массива 'leaves', используя array_walk_recursive:

<?php

$data = 
[
    [
        [
            'wanted' => 'foo'
        ],
    ],
    [
        [
            'wanted'=> 'bar'
        ],
        'dead'=>'parrot'
    ]
];

array_walk_recursive($data, function($v, $k) use (&$wanteds) {
    if($k==='wanted')
        $wanteds[]=$v;
});
var_export($wanteds);

Вывод:

array (
    0 => 'foo',
    1 => 'bar',
  )

Обратите внимание на условную проверку на листовых ключах, чтобы собрать только требуемые атрибуты.

После этого вы можете легко просмотреть созданный массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...