

Безкоштовна реєстрація доменів в зоні org.ua, te.ua
Як скачати файл з YouTube чи vkontakte?
Error: Перевищено ліміт при реєстрації доменів
Моє життя
Що таке URL ?
Чому мене задовбала аська
Історія Інтернету
Спам. І як з ним боротися
Sypex Dumper - бекап бд
Eset NOD 32 - де взяти ключі для обновлення?
Linux || Windows ?
Як скачати файл з YouTube чи vkontakte?
Error: Перевищено ліміт при реєстрації доменів
Моє життя
Що таке URL ?
Чому мене задовбала аська
Історія Інтернету
Спам. І як з ним боротися
Sypex Dumper - бекап бд
Eset NOD 32 - де взяти ключі для обновлення?
Linux || Windows ?


json_encode i json_decode - як застрахуватись від проблем
Маю надію, що ви вже розібрались що таке , і активно його використовуєте. наприклад в аякс запитах. Впринципі в php починаючи з версії 5.2.0 функції json_encode i json_decode присутні. Але я вже кілька раз зустрічався з ситуацією, коли після перенесення сайту на інший хостінг ставались дивні помилки. Після дебагу я розумів, що просто на сервері відключені ці функції. Через те щоб не мати лишнії проблем можна використовувати дані функції. які є аналогами стандартних.
JSON_ENCODE:
function array2json($arr) {
$parts = array();
$is_list = false;
if (!is_array($arr)) return;
if (count($arr)<1) return '{}';
//Find out if the given array is a numerical array
$keys = array_keys($arr);
$max_length = count($arr);
if(($keys[0] == 0) and ($keys[$max_length] == $max_length)) {//See if the first key is 0 and last key is length - 1
$is_list = true;
for($i=0; $i if($i != $keys[$i]) { //A key fails at position check.
$is_list = false; //It is an associative array.
break;
}
}
}
foreach($arr as $key=>$value) {
if(is_array($value)) { //Custom handling for arrays
if($is_list) $parts[] = array2json($value); /* :RECURSION: */
else $parts[] = '"' . $key . '":' . array2json($value); /* :RECURSION: */
} else {
$str = '';
if(!$is_list) $str = '"' . $key . '":';
//Custom handling for multiple data types
if(is_numeric($value)) $str .= $value; //Numbers
elseif($value === false) $str .= 'false'; //The booleans
elseif($value === true) $str .= 'true';
else $str .= '"' . addslashes($value) . '"'; //All other things
// :TODO: Is there any more datatype we should be in the lookout for? (Object?)
$parts[] = $str;
}
}
$json = implode(',',$parts);
if($is_list) return '[' . $json . ']';//Return numerical JSON
return '{' . $json . '}';//Return associative JSON
}
$parts = array();
$is_list = false;
if (!is_array($arr)) return;
if (count($arr)<1) return '{}';
//Find out if the given array is a numerical array
$keys = array_keys($arr);
$max_length = count($arr);
if(($keys[0] == 0) and ($keys[$max_length] == $max_length)) {//See if the first key is 0 and last key is length - 1
$is_list = true;
for($i=0; $i
$is_list = false; //It is an associative array.
break;
}
}
}
foreach($arr as $key=>$value) {
if(is_array($value)) { //Custom handling for arrays
if($is_list) $parts[] = array2json($value); /* :RECURSION: */
else $parts[] = '"' . $key . '":' . array2json($value); /* :RECURSION: */
} else {
$str = '';
if(!$is_list) $str = '"' . $key . '":';
//Custom handling for multiple data types
if(is_numeric($value)) $str .= $value; //Numbers
elseif($value === false) $str .= 'false'; //The booleans
elseif($value === true) $str .= 'true';
else $str .= '"' . addslashes($value) . '"'; //All other things
// :TODO: Is there any more datatype we should be in the lookout for? (Object?)
$parts[] = $str;
}
}
$json = implode(',',$parts);
if($is_list) return '[' . $json . ']';//Return numerical JSON
return '{' . $json . '}';//Return associative JSON
}
JSON_DECODE:
function json2array($json){
if(get_magic_quotes_gpc()){
$json = stripslashes($json);
}
$json = substr($json, 1, -1);
$json = str_replace(array(":", "{", "[", "}", "]"), array("=>", "array(", "array(", ")", ")"), $json);
@eval("\$json_array = array({$json});");
return $json_array;
}
if(get_magic_quotes_gpc()){
$json = stripslashes($json);
}
$json = substr($json, 1, -1);
$json = str_replace(array(":", "{", "[", "}", "]"), array("=>", "array(", "array(", ")", ")"), $json);
@eval("\$json_array = array({$json});");
return $json_array;
}
Дата: 27 квітня 2010р.
Переглядів: 240
Коментарі:
Добавити новий коментарій:






Добавлення вашого коментарiя