Я хочу проанализировать строку JSON ниже в ассоциативный массив, отсортировать его по полю «age» и вывести отсортированный массив в виде таблицы HTML:
<? $json='[{"name": "jesse","age": 25},{"name": "jason","age": 29},{"name": "johnson","age": 24}]'; ?>
Должен ли я использовать какой-то json_decode для печати отдельных значений и использовать существующую функцию сортировки в php?
Да, единственный способ (я знаю) использовать:
$array = json_decode( $json); $array = array_map( $array, 'objectToArray'); // Or rather: $array = json_decode( $json, true); // And sort sort( $array);
Php предлагает множество функций сортировки массивов , просто просматривайте руководство. Я также заимствовал objectToArray
с этой страницы .
Я думаю, вы захотите отсортировать по возрасту (или имени), вероятно, вы должны использовать usort
:
function cmp( $a, $b){ if( !isset( $a['age']) && !isset( $b['age'])){ return 0; } if( !isset( $a['age'])){ return -1; } if( !isset( $b['age'])){ return 1; } if( $a['age'] == $b['age']){ return 0; } return (($a['age'] > $b['age']) ? 1 : -1); } usort( $array, 'cmp');
вы можете json_decode
строку, которая даст вам массив php ассоциированных массивов. Оттуда вы можете использовать встроенную сортировку php для сортировки по требуемому ключу.