Ответов: 3 Просмотров: 90
|
Мелкий пишет:yaroslav.chernicov77 пишет:А в предоставленном фале идет формат
А теперь откройте файл и покажите там такое.
Там нормальный JSON "NAME":"Ardell","~NAME":"Ardell"
yaroslav.chernicov77 пишет:Я заметил что json_decode декодирует только определенный формат
Разумеется. json_decode предназначен декодировать корректный JSON.
yaroslav.chernicov77 пишет:print $obj->{"NAME"}; // Пытаюсь вывести все названия товаров
Результата 0 причина не очень понятна
Рассматриваете структуру вашего JSON, потом достаёте данные по нужному пути. Почему вы решили, что у вас на верхнем уровне объект? Это верно, но почему вы так решили? Почему вы решили, что у объекта верхнего уровня есть свойство NAME? Почему вы решили, что в нём будут "все названия товаров"?
В целом ответ нашел сделал вывод и категоризированем по буквам как показано в примере мне получилось
Осталось только последний пункт, а именно нужно все расставить в таблице с 3 строками с примерно равным количеством значений.
Так вот тут я использую цикл foreach причем 2 уровненный чтобы вывести отсортированные и сгруппированые названия товаров.
Так вот тут я уже не как не могу придумать идею как сделать чтобы цыклы выводили 3 столбца с равными по размеру значениями?
(Добавление)
Вообщем сделал код и выкладываю в паблик чтобы другие у кого будет такая же задача могли бы быстро её решить
PHP:
скопировать код в буфер обмена
<? $json= 'http://om-sv.ru/progtest/arData.txt'; // Указываю путь на файл //$json = '{"NAME":"LA MENTE"}'; //var_dump($obj); //print $obj->{"SECTIONS"}->{"NAME"}; // Вывожу на экран //echo $obj; //foreach ($obj[SECTIONS][1] as $key => $value) { //echo "<b>$value $key</b><br>"; //} //echo $obj[SECTIONS][5][NAME]; $mass= count($obj[SECTIONS ]); for ($x=1; $x<=$mass; $x++) //echo $obj[SECTIONS][$x][NAME].'<br>'; $NameMass[$x] = $obj[SECTIONS][$x][NAME]; sort($NameMass, SORT_STRING ); for ($x=15; $x<=33; $x++) $NameMass1[$x] = $NameMass[$x]; for ($x=34; $x<=48; $x++) $NameMass2[$x] = $NameMass[$x]; for ($x=49; $x<=63; $x++) $NameMass3[$x] = $NameMass[$x]; echo '<table>'; echo '<tr>'; /// 1 Столбец echo '<td>'; # Сортируем по алфавиту # Формируем массив разбитый на категории sorting($NameMass1); # Выводим foreach( $NameMass1 as $key=>$items ) { # Выводим букву раздела echo "<br><h3>".mb_strtoupper( $key, 'utf-8' ) . "</h3><br><br>"; # Выводим значения foreach( $items as $value ) { echo '<b>'.$value . "</b><br>"; } } echo '</td>'; /// 1 Столбец /// 2 Столбец echo '<td>'; # Сортируем по алфавиту # Формируем массив разбитый на категории sorting($NameMass2); # Выводим foreach( $NameMass2 as $key=>$items ) { # Выводим букву раздела echo "<br><h3>".mb_strtoupper( $key, 'utf-8' ) . "</h3><br><br>"; # Выводим значения foreach( $items as $value ) { echo '<b>'.$value . "</b><br>"; } } echo '</td>'; /// 2 Столбец /// 3 Столбец echo '<td>'; # Сортируем по алфавиту # Формируем массив разбитый на категории sorting($NameMass3); # Выводим foreach( $NameMass3 as $key=>$items ) { # Выводим букву раздела echo "<br><h3>".mb_strtoupper( $key, 'utf-8' ) . "</h3><br><br>"; # Выводим значения foreach( $items as $value ) { echo '<b>'.$value . "</b><br>"; } } echo '</td>'; /// 3 Столбец echo '</tr>'; echo '</table>'; function sorting( & $array ) { # "Память" $memory = NULL; # Новый массив # Обходим массив foreach( $array as $item ) { # Получаем первую букву # Если текущая буква не равна предыдущей if( $letter != $memory ) { # Заносим букву в "память" $memory = $letter; # Добавляем новый массив $sorting[$memory] = array(); } # Дополняем массив $sorting[$memory][] = $item; } # Назвачаем массив $array = $sorting; } /* $json= 'arData.json'; $sData= file_get_contents($json); // Качаем файл каталог //var_dump(json_decode($sData)); $obj = json_decode($sData,true); $title_one = $obj['response']['items'][0]['title_one']; echo $title_one; */ ?> <!-- <table> <tr> <td>1</td><td>2</td><td>3</td> </tr> <tr> <td>4</td><td>5</td><td>6</td> </tr> <tr> <td>7</td><td>8</td><td>9</td> </tr> </table>
|