我必须将PHP数组json_encode编译为JavaScript数组。不幸的是,如果它包含整数而不是字符串,那么我使用的jQuery库将无法正确处理该数组。
大多数情况下,这将产生仅包含字符串的正确数组:
json_encode($data)
即使$ data只包含数字,我通常会得到这个
["3","7","8"]
有时候,我会得到这样的结果(注意零):
["9691","1792","26","1","4","15",0,"1"]
或者
[16171,15470,10390,7585]
(注意,这显然是不同的数据,以说明正在发生的事情)。我需要强制执行json_encode将数组值视为字符串。我知道有相反的选项JSON_NUMERIC_CHECK强制执行数字。等价物真的不存在吗?似乎我唯一的选择是在JavaScript端再次处理数组,尽管可能会在某种程度上打破对象的封装。
答案 0 :(得分:4)
在数组中将它们定义为字符串,或者它是否来自其他地方:
$data = json_encode(array_map('strval', $data));
答案 1 :(得分:3)
如果有JSON_NUMERIC_CHECK
的相反情况会很好,但它看起来并不像。
在编码之前,为什么不能确保php中的数据类型正确?
这可能意味着您必须手动将其强制转换为字符串...
答案 2 :(得分:0)
json_decode()
可以将大整数转换为字符串:
$array = json_decode($json, true, 512, JSON_BIGINT_AS_STRING)
答案 3 :(得分:0)
因为function JSON_NUMERIC_STRING($array){
foreach($array as $key => &$value){
if(is_array($value)){
$value = iterateMA($value);
}elseif(is_numeric($value)){
$value = strval($value);
}
// add more conditions if needed...
}
return $array;
}
$array = JSON_NUMERIC_STRING($array);
没有相反的标志,我已经为此创建了一个函数
它接受一维和多维数组,并且可以添加条件来验证te数组的每个元素。
{{1}}