如果在PHP中为空,如何对空键和值进行排序

use*_*060 5 php arrays sorting

我需要的

  • 我需要什么时候[评论] =''字段是空的然后它应该排序,它会导致较低的顺序.
  • 数组结构

    [0] => Array
    (
        [type] => CACDA
        [metadata] => Array
            (
                [0] => Array
                    (
                        [amount] => 320
                        [comment] => 
                    )
    
            )
    
    )
    
     [1] => Array
    (
        [type] => CVMA
        [metadata] => Array
            (
                [0] => Array
                    (
                        [amount] => 320
                        [comment] => Onsite After February 20
                    )
    
            )
    
    )
    
    Run Code Online (Sandbox Code Playgroud)

源代码

              unset($data[0]);
            //store types and the arrays the belong to    
                foreach($data as $k=>$v){
                $type[$v['type']][]=$k;
                }

                //loop types, creating result array
                foreach($type as $k=>$v){
                $tmp=array(
                'type'=>$k,
                'metadata'=>array()
                );
                //loop all the arrays of this type
                foreach($v as $w){
                //store in TMP
                $t=array(
                'amount' => $data[$w]['amount'],
                'comment' => $data[$w]['comment']
                );

               $t array structure

                                                                                 Array
                                    (
                                    [amount] => 320
                                    [comment] => 
                                    )
                                    Array
                                    (
                                    [amount] => 320
                                    [comment] => Onsite After February 20
                                    )
                                    Onsite After February 20Array
                                    (
                                    [amount] => 320
                                    [comment] => Onsite After February 20
                                    )
                                    Onsite After February 20Array
                                    (
                                    [amount] => 370
                                    [comment] => Onsite After February 20
                                    )
                                    Onsite After February 20Array
                                    (
                                    [amount] => 170
                                    [comment] => Onsite After February 20
                                    )
                //sort TMP on EMPTY value
                //usort($t,function ($a, $b) {
                //if($a == '' && $b != '') return 1;
                //if($b == '' && $a != '') return -1;
                //if($b == 0){return 1;}
                //return 0; 
                //});
                arsort($t['comment']);
                //store 
                $tmp['metadata'][]=$t;
                }
                $result[]=$tmp;
                }
Run Code Online (Sandbox Code Playgroud)

排序后的数组输出应该像ex一样

      [1] => Array
    (
        [type] => CVMA
        [metadata] => Array
            (
                [0] => Array
                    (
                        [amount] => 320
                        [comment] => Onsite After February 20
                    )

            )

    )
   [0] => Array
    (
        [type] => CACDA
        [metadata] => Array
            (
                [0] => Array
                    (
                        [amount] => 320
                        [comment] => 
                    )

            )

    )
Run Code Online (Sandbox Code Playgroud)
  • 问题我有我也尝试过usort.

  • 我尝试过使用arsort功能,但没有任何工作可以进行排序.

  • 请告诉我哪里做错了.

  • 哪个排序功能我应该用于php中的键和值.

ʰᵈˑ*_*ʰᵈˑ 8

你可以用uasort.

uasort($array, function($a) {
     return ( is_null($a['metadata'][0]['comment']) OR $a['metadata'][0]['comment'] == "") ? 1 : -1;
});
Run Code Online (Sandbox Code Playgroud)

https://eval.in/207091