Использование foreach в сложных массивах

381
.
primalmz


Делал так .json файл перевел на массив через json_decode,для начало пробовал вводит прямо из массива 1 слово,всё пошло на ура,сделал так :
$descr = $obj->data[0]->items[1]->descr;

теперь мне нужно через foreach (или другой цикл рекомедуете) вводит все descr,но массив очень сложный не знаю что делать.
Изучил foreach можно вводит примерно так
$key=>$value

Но мой массив примерно такой
$key
                         $key
                                $value

Cам код сейчас :
<?php
$url = 'http://tv/schedule.json';
$contents = file_get_contents($url);
$obj = json_decode($contents);

$descr = $obj->data[0]->items[1]->descr;
$ruperevod = "(rus tilida)";
$pustoyprobel = "Iwlamadi";

if($descr == "/rus/")
{
$new_descr = str_replace ($descr,$ruperevod,$descr); 
}
else
{
echo $pustoyprobel;
}

echo $new_descr,' ',$new_descr;
?>


Сам Json файл :
[url=]https://www.mtrk.uz/uz/api/mtrk/schedule.json[/url]
.
У тебя ведь items обьектов. Перебери его, там ключи будут от 0 ити.
.
primalmz, попробуй заменить эту строку
$obj = json_decode($contents);
на вот эту
$obj = json_decode($contents, true);
И тогда у тебя в переменной $obj будет сохранён именно массив, а не объект.
.
# ДоХтор (31.07.2017 / 21:47)
primalmz, попробуй заменить эту строку $obj = json_decode($contents); на вот эту $obj = json_decode($contents, true); И тогда у тебя в переменной $obj будет сохранён именно массив, а не объект.
Тогда скрипт не работает,не знаю почему.
.
primalmz, Тогда стучать нужно как в массиве - [0][1]['descr']
.
# ROM (31.07.2017 / 21:47)
У тебя ведь items обьектов. Перебери его, там ключи будут от 0 ити.
Можно подробнее ?
.
Добавлено: 31.07.2017 / 22:17
# ROM (31.07.2017 / 22:14)
primalmz, Тогда стучать нужно как в массиве - [0][1]['descr']
Пожалуйста приведи пример,в примере моего кода

Добавлено: 31.07.2017 / 22:28
$descr = $obj->[0][1]['descr'];
но теперь дает ошибку.
.
# primalmz (31.07.2017 / 22:12)
Тогда скрипт не работает,не знаю почему.
Получай результат в массив, распечатывай этот массив, и смотри что тебе нужно, то и выбирай по его ключам
$url = 'https://www.mtrk.uz/uz/api/mtrk/schedule.json';

$arr = json_decode(file_get_contents($url), 1);

echo '<pre>'; var_dump($arr); echo '</pre>';
.
Добавлено: 31.07.2017 / 23:51
Да жопа какой то,(

Добавлено: 01.08.2017 / 00:05
foreach($obj['data'][0]['items'] as $key=>$duration){
echo '<pre>'.print_r($duration,1);
}

а тут теперь не работает $key=>$duration,тупо вводит $obj['data'][0]['items']
.
Hey guys! Finally I'm gonna change status!?
primalmz, Я же тебе говорю, ты какой то не логичный план составляешь
Пробуй, под свои нужды сам перепишешь))
if (!is_file('schedule.json')) {
    $url = 'https://www.mtrk.uz/uz/api/mtrk/schedule.json';
    file_put_contents('schedule.json', file_get_contents($url));
} else {
    $url = 'schedule.json';
}
$contents = file_get_contents($url);
$obj = json_decode($contents, true);

foreach ($obj['data'][0] as $key =>  $val) {
    if ($key != 'items') {
        continue;
    }
    foreach ($val as $item) {
        if (isset($item['descr']) && $item['descr'] == '/rus/') {
            echo '(rus tilida)<br />';
        } else {
            echo 'Iwlamadi<br />';
        }
    }
}
Всего: 14