Обработка PHP массива для первых детей - PullRequest
0 голосов
/ 21 сентября 2010

Я так устал от массивов сегодня - бросил меня повсюду.

Итак, вот вывод массива:

Array
(
[2010091907] => Array
    (
        [home] => Array
            (
                [score] => Array
                    (
                        [1] => 7
                        [2] => 17
                        [3] => 10
                        [4] => 7
                        [5] => 0
                        [T] => 41
                    )

                [abbr] => ATL
                [to] => 2
            )

Array
(
[2010091909] => Array
    (
        [home] => Array
            (
                [score] => Array
                    (
                        [1] => 7
                        [2] => 17
                        [3] => 10
                        [4] => 7
                        [5] => 0
                        [T] => 41
                    )

                [abbr] => ATL
                [to] => 2
            )

Array
(
[2010091901] => Array
    (
        [home] => Array
            (
                [score] => Array
                    (
                        [1] => 7
                        [2] => 17
                        [3] => 10
                        [4] => 7
                        [5] => 0
                        [T] => 41
                    )

                [abbr] => ATL
                [to] => 2
            )

Я собираюсь писатьpreg_match для итерации каждого [2010091907], но прежде чем я смогу, я не понимаю, как получить эту часть информации или как ее вызвать.Я бы делал что-то вроде:

$json=json_decode($data,true);
foreach ($json['dont-know-what-to-call-it'] as $key => $value) {
            echo "Key: ".$key."; Value: ".$value."<br />";
}

Я просто не знаю, как называть каждый из этих [2010091901] блоков, например, какое имя я бы назвал их.Я знаю, как называть материал оценкой, так как он называется «счет», а данные находятся под всем этим.Я не знаю, как получить ключ / значение начальных «разделов» массива.В конце я хочу захватить каждый [2010091901], манипулировать / использовать данные, которые находятся между каждым из [2010091901], а затем перейти к следующей «записи».

Ответы [ 3 ]

2 голосов
/ 21 сентября 2010

$date_keys = array_keys($json) даст (0 => 2010091907, 1 => 2010091909, ...).тогда вы можете сделать

foreach ($date_keys as $d) {
   foreach ($json[$d] as $key => $value) {
...

Кроме того, если вам на самом деле не нужны индексы внешнего массива (значения даты - 2010091907 и т. д.), чем вы можете просто сделать

foreach ($json as $j) {
   foreach ($j as $key => $value) {
...

игнорирование ключей $json

1 голос
/ 21 сентября 2010

Разве ты не можешь просто вкладывать foreach() с?

foreach($jsondata as $somedate => $value){
    //do you actually need $somedate?
    foreach($value['home']['score'] as $score){
        echo $score.PHP_EOL;
    }
}
0 голосов
/ 21 сентября 2010

Вы можете просто сделать

$json = json_decode($data, true);
foreach($json as $ymd => $data)
{
    // $ymd = [2010091907, 2010091909,… ]
    // $data is the array starting with the key home. so $data['home']['score'][1] = 7 for the first iteration
}

Этот ответ на ваш вопрос?Не ясно на 100%, что вы спрашиваете

...