JSON: JavaScript Object Notation
встала задача передачи многомерного массива из РНР в клиентский код. Сразу же в памяти всплыл замечательный JSON и пришлось его реализовать. Задача не из сложных, поэтому через 10минут появилось это:
/**
* Преобразование матрицы ассоциативного массива в JSON
* (JavaScript Object Notation)
*
* @param assoc_array $array
* @return string JSON
*/
function composeJSON($array) {
$json = "[";
foreach ($array as $item) {
$json .= " { ";
foreach ($item as $key => $val) {
if (is_array($val)) {
$json .= $key.": ".composeJSON($val);
} else {
$json .= "{$key}: '{$val}',\\n";
}
}
$json = substr($json, 0, -2);
$json .= " } ,\\n";
}
$json = substr($json, 0, -2);
$json .= " ]“;
return $json;
}
И работает и все бы ничего, но. Оказывается что в PHP 5.2.0, который я удчно использую json_encode() и json_decode() присутствуют на уровне ядра ![]()
Вывод: читайте маны и changelog’и каждой версии софтины перед использованием . особенно это касается языков программирования…
З.Ы. Небольшая заметка. Встроенные функции РНР работают исключительно с UTF8 данными, так что не забудте их кодить в нужный формат ![]()
Tags: Javascript, JSON, PHP, решение
Также рекомендую к прочтению:
Март 17th, 2007 at 12:18
Лучше всё-таки иметь свои велосипеды для замены самым свежим функциям. Дабы не напороться на места, где нет поддержки.
Март 17th, 2007 at 12:19
И ещё это… Сделал бы какую-нибудь систему форматирования кода отступами, а то некрасиво
Март 17th, 2007 at 12:22
та уже подумывал над тем что б написать, но как-то как обычно руки не доходят ибо времени нет, а я и сегодня на работе сижу
Март 17th, 2007 at 12:38
А теперь видна прелесть макета с фиксированной шириной колонки
Думаю, надо посмотреть в сторону textarea для кода. Или же div’ы какие-то c overflow: auto;
Март 17th, 2007 at 12:40
не. фик с ним - красива
Март 17th, 2007 at 13:02
а вот вы чем здесь занимаетесь…
Май 8th, 2007 at 13:08
Забыл как функция называется, полез в блог смореть. Тока не надо кричать, что я маняг…
Май 8th, 2008 at 13:08
Первое, что пришло в голову, когда увидел этот заголовок - написать те две функции из мануала
Август 13th, 2008 at 16:58
Да, хорошая функция… Спасибо