2014-06-15 32 views
-1

下面是我的JSON结果时,我不更换频道的顺序按时序:PHP - array_search附加与json_encode函数解析问题键

"channels": [ 

{ 
    "id": "1", 
    "name": "LBC دراما " 
}, 
{ 
    "id": "2", 
    "name": "KTV Arabe" 
}, 
{ 
    "id": "3", 
    "name": "KTV Plus" 
} 

] 

现在,当我与返回的值取代数组键array_search功能,它带来与阵列响应的关键是问题对我来说:

"channels": { 

"0": { 
    "id": "2", 
    "name": "KTV Arabe" 
}, 
"1": { 
    "id": "1", 
    "name": "LBC دراما " 
}, 
"3": { 
    "id": "3", 
    "name": "KTV Plus" 
} 

} 

代码:

$newChannelsArr['channels'][array_search($channelsArr['channels'][$a]['id'], $data)] = ($channelsArr['channels'][$a]); 

我怎样才能克服从键被附加在我的JSON数组?

我的代码段:

$data values: 

Array 
    (
     [0] => 2 
     [1] => 1 
     [3] => 3 
    ) 

$newChannelsArr = array(); 
    if(isset($data)){ 
     for($a = 0; $a < count($data); $a++){ 


      $kv = array_search($channelsArr['channels'][$a]['id'], $data); 
      $newChannelsArr['channels'][(int)$kv] = ($channelsArr['channels'][$a]); 

     } 
    } 

解决方案:

Solution

ksort($newChannelsArr['channels']); // sort an array 
$arr = array_map('array_values', $arr); // regenerate their keys 

这将是一个快速的补丁。

回答

0

不,因为JSON数组没有键。这就是为什么当你添加它时,在第二个响应中,你现在得到了对象,而不是你之前拥有的数组,以及你想成为数组键的对象的属性。你不能以数组的形式访问对象。您现在必须访问它作为对象:

$foo->property... 
+0

好的,所以在我的代码中的任何建议的更改? –