Разбор многомерного массива

208
13 января 2018, 02:33

Есть скрипт, который выдает информацию в таком виде:

{
"status": "ok",
"ID": "",
"city": "Kiev",
"name": "Viktoriya",
"ads": [{
    "name_ads": "Запись 1",
    "url_ads": "Ссылка 1",
    }, {
    "name_ads": "Запись 2",
    "url_ads": "Ссылка 2",
}]

Не могу вывести (echo) все эти параметры вида:

"Запись 1 -  Ссылка 1; Запись 2 - Ссылка 2".
Answer 1

Я не очень понял, у вас это не получается?

<?php
$json = '{
"status": "ok",
"ID": "",
"city": "Kiev",
"name": "Viktoriya",
"ads": [
    {
      "name_ads": "Запись 1",
      "url_ads": "Ссылка 1"
      }, 
    {
      "name_ads": "Запись 2",
      "url_ads": "Ссылка 2"
    }
  ]
}';
$array = \json_decode($json, true);
$result = '';
foreach ($array as $name => $item) {
    if ($name === 'ads' && \is_array($item)) {
        foreach ($item as $key => $ads) {
            $keys = \array_keys($item);
            if ($key === \end($keys)) {
                $result .= $ads['name_ads'] . ' - ' . $ads['url_ads'];
            } else {
                $result .= $ads['name_ads'] . ' - ' . $ads['url_ads'] . '; ';
            }
        }
    }
}
var_dump($result);

Результат:

json.php:35:string 'Запись 1 - Ссылка 1; Запись 2 - Ссылка 2' (length=64)
Answer 2

для конкретно данного результирующей строки можно применить, например, следующий код:

$txt = '{"status":"ok","ID":"","city":"Kiev","name":"Viktoriya","ads":[{"name_ads":"Запись 1","url_ads":"Ссылка 1"},{"name_ads":"Запись 2","url_ads":"Ссылка 2"}]}';
$json = json_decode($txt, true);
$result = implode('; ', array_map(function($v){
                             return $v['name_ads'].' - '.$v['url_ads'];
                          }, $json['ads']));
echo "\"{$result}\".";

отмечу, что у вас не совсем валидный json, есть пара лишних запятых.

вариант без array_map:

$result = [];
foreach($json['ads'] as $v){
    $result[] = $v['name_ads']." - ".$v['url_ads'];
}
$result = implode('; ', $result);
READ ALSO
Русские буквы на fdpf

Русские буквы на fdpf

Напишите вес алгоритм как сделать поддержку русских букв на Fpdf на phpПереводил в afm все равно не работает

197
Класс Yii в yii2

Класс Yii в yii2

Где находится класс Yii? Хочу посмотреть его методы и как он устроен

155
Есть ли удобное решение для сложных запросов?

Есть ли удобное решение для сложных запросов?

Работая с Doctrine2 я заметил, что с ее помощью очень удобно сохранять данные сущностей, однако с выборками нужно существенно повозитьсяПонятно,...

174
Перемещение данных из одной таблицы в другую с разной структурой

Перемещение данных из одной таблицы в другую с разной структурой

Нужно перенести данные из одной таблицы в другую по соответствующему idПроблема в том, что у таблиц структура разная

228