自己试着简单写了一个PHP数组转换json的代码,
数字与数字字符串的键值问题也考虑到了,
感兴趣的可以看下:
class JsonEncode {
public function __construct(){
$this->json = '';
}
public function run($arr){
$i = 0;
$flag = true;
foreach($arr as $k => $v){
if(!is_int($k)||$k>=count($arr)||$k<0) $flag = false;
}
foreach($arr as $k => $v){
if(is_int($k)&&$flag){
if($k==0) $this->json .= '[';
$this->concat($v);
if($k+1==count($arr)) $this->json .= ']';
}else{
$flag = false;
if($i==0) $this->json .= '{';
$this->json .= '"'.$k.'":';
$this->concat($v);
if($i+1==count($arr)) $this->json .= '}';
}
$this->json .= ',';
$i++;
}
$this->json = substr($this->json, 0 ,-1);
return $this->json;
}
private function concat($v){
if(is_array($v)){
if(empty($v)){
$this->json .= '[]';
}else{
$this->run($v);
}
}else{
$this->json .= '"'.$v.'"';
}
}
}
代码应用
$arr = array('1','abc');
$arr2 = array('-1'=>'123',2=>'123');
$arr3 = array('0'=>'123',1=>'123');
$arr4 = array(
'1'=>'内容',
'测试'=>'内容',
'test1'=>'',
'test2'=>array('1','2',
array(
'key'=>'value'
)
),
'test3'=>array(
'key'=>'value'
)
);
$data = new JsonEncode()->run($arr); // ['1','abc']
$data = new JsonEncode()->run($arr2); // {-1:'123', 2:'123'}
$data = new JsonEncode()->run($arr3); // ['123','123']
$data = new JsonEncode()->run($arr4);
// {1:'内容', '测试':'内容', 'test1':'', 'test2':['1','2',{'key':'value'}], 'test3':{'key':'value'}}
mr158
就是想折腾一下哈哈
保罗!
PHP 不是有内置函数的嘛