ValekS, я сперва функцию написал для получения значений по указанным ключам, но в ходе "переговоров" мне пришла мысль, что для его задачи наверное лучше было бы юзать не массив, а объект. На всякий случай креплю функцию для этих двух файлов
* (+/-)
<?php
$broadcast = file_get_contents('broadcast.json');
$schedule = file_get_contents('schedule.json');
$arrBroadcast = json_decode($broadcast, true);
$arrSchedule = json_decode($schedule, true);
// Ключ, по которому надо найти значения в broadcast.json
$needBroadcast = array('title');
// Ключи, по которым надо найти значения в schedule.json
$needSchedule = array('title', 'time', 'descr');
$Broadcast = getArray($arrBroadcast, $needBroadcast);
$Schedule = getArray($arrSchedule, $needSchedule);
echo '<pre>'; var_dump($Broadcast, $Schedule); echo '</pre>';
function getArray($arr, $keys, &$out = array()) {
array_walk($arr, function ($i, $k) use ($keys, &$out) {
if (is_array($i)) {
getArray($i, $keys, $out);
} elseif (in_array($k, $keys) && strripos($i, '.jpg') === false) {
$out[] = $i;
}
});
return $out;
}
ДоХтор, так а она работает? Если да, то что ему тогда надо?
# ValekS (13.08.2017 / 00:24)
ДоХтор, так а она работает? Если да, то что ему тогда надо?
Да, конечно работает. Зачем бы я её скидывал, гг... А вот что ему надо, я до конца понять не смог. Всё что я смог понять, так это поиск во многомерном массиве значений по нескольким ключам. Для этого и написал функцию. Но вроде бы это ещё не всё
ValekS, и ещё -- у него пхп версии меньше 5.4, сокращённый синтаксис объявления массивов не используй.
Добавлено: 13.08.2017 / 00:36
Я наверно не могу правильно обьяснит.
Вот я создаю парсинг тв программы.
Сперва парсил schedule.json всё ок проблем нет,но разработчик сайта чуть хитрожопый
есть места в файле там где отсутствует title, title для этих мест берется из другого broadcast.json.
Вот вместо title в файле стоит ключ broadcast который совпадает с _id этого broadcast.json файла.
Вот title берется из этого _id.
Добавлено: 13.08.2017 / 00:37
Теперь мне нужно типо делать так если broadcast == _id то echo title
Но проблема в том что как мне тут : echo title вводит title именно определенного _id
Добавлено: 13.08.2017 / 00:42
То есть код должен искать значение title из broadcast.json который совпадает с значением broadcast , файла schedule.json
Да уж, жосско. Объемные файлы и структура файлов какая то кривая. Вот это ИД должно быть индексом вот этих всех массивов с title и остальной инфой. Тогда бы все было легко и просто. А так... Это очень много ресурсов сервера надо использовать.
Я бы в начале распарсил в начале вот этот broadcast.json - собрал бы в отдельный файл пары "_id => индекс массива в котором лежит этот ИД" или же сразу(да так даже и проще) "_id => title" (и все остальные поля которые могут понадобиться). Конечно это тоже трудоемкий процесс. Но зато потом проблем не будет. Мы один раз потратимся и все. А не будем каждый раз это делать.
А еще я хочу сказать что для больших объемов данных лучше xml использовать, а не json. Дело в том что для хмл в пхп есть крутая фишка - построчное считывание(не весь файл грузится в память, а по небольшим частям). Т.Е. пхп даже гиговые хмл файлы схавает и не подавится. А вот на счет того что такое есть и для жсон я не уверен. Скорее всего нет.
ValekS, xml может чуть более запутанным быть, в пхп7 есть
http://php.net/manual/ru/langu ... w.php
Заюзай библиотеку phpquery...
есть массив, допустим
$a['xxx'][0]=6
$a['xxx'][1]=3
$a['xxx'][5]=3
$a['yyy'][1]=2
мне нужно удалить $a['yyy'][1] , удаляю так unset($a['yyy'][1])
но при просмотре например через print_r($a) видно что [yyy] хоть и пустое , но есть.
как полностью удалить [yyy] если оно было последнее?
Ну так удаляй без индекса