Array ( 
[ssss] => jfsjhfh 
[bbbb] => jfdhjh 
[cccc] => 32487 
[uuuu] => 847738
[jjjj] => 84783
[oooo] => Array ( 
[llll] => 131
[oooo] => 83748 
[aaaa] => 9289 
[ffff] => 2873 ) 
[eeee] => Array ( 
[0] => eeee Object ( 
[nnnn] => isjfi 
[ssss] => dhshjhhd 
[mmmm] => dksjdk 
[iiii] => disj 
[aaaa] => dksjdik 
)

)
以上有一json数组(里面包含一对象),如何根据键名的首字符进行排序。
实现效果如下。
Array ( 
[bbbb] => jfdhjh 
[cccc] => 32487 
[eeee] => Array ( 
[0] => eeee Object ( 
[aaaa] => dksjdik 
[iiii] => disj 
[mmmm] => dksjdk 
[nnnn] => isjfi 
[ssss] => dhshjhhd 
)

[jjjj] => 84783
[oooo] => Array ( 
[aaaa] => 9289 
[ffff] => 2873 
[llll] => 131
[oooo] => 83748 

[ssss] => jfsjhfh 
[uuuu] => 847738
)
求各位打算指教,万分感谢,用PHP语言编写。
主要难点求解Object 如何排序。

解决方案 »

  1.   

    1、你的数组无法从 json 得到
    2、json 不包含类定义信息,所以 php 只能解码出 stdClass Object,而不是 eeee Object
      

  2.   

    那eeee Object里面的参数就不能排序了么。有没有什么方法可以加解决啊。
      

  3.   

    那eeee Object里面的参数就不能排序了么。有没有什么方法可以加解决啊。
      

  4.   

    class T {
      var $c = 1;
      var $b = 2;
      var $a = 3;
    }$p = new T;
    print_r($p);settype($p, 'array');
    ksort($p);
    settype($p, 'object');
    print_r($p); T Object
    (
        [c] => 1
        [b] => 2
        [a] => 3
    )
    stdClass Object
    (
        [a] => 3
        [b] => 2
        [c] => 1
    )
    可见,排序是可以的,但是没有意义的
      

  5.   

    你把对象转换成数组就行了class eeee{
    public $nnnn = 'isjfi';
    public $ssss = 'dhshjhhd';
    public $mmmm = 'dksjdk';
    public $iiii = 'disj';
    public $aaaa = 'dksjdik';
    }$arr = Array( 
    'ssss' => 'jfsjhfh',
    'bbbb' => 'jfdhjh ',
    'cccc' => 32487 ,
    'uuuu' => 847738,
    'jjjj' => 84783,
    'oooo' => Array( 
    'llll' => 131,
    'oooo' => 83748 ,
    'aaaa' => 9289 ,
    'ffff' => 2873 ,
    ), 
    'eeee' => Array (new eeee()),
    );array_walk($arr,function(&$v){
        if(is_array($v)){
            array_walk_recursive($v,function(&$v1){
                if(is_object($v1)){
                    $v1 = get_object_vars($v1);
    ksort($v1);
                }
            });
    ksort($v);
        }
    });ksort($arr);echo "<pre>";
    print_r($arr);
    echo "</pre>";