PHP中的ksort用于多维数组?[副本]

sd2nnvve  于 2023-05-05  发布在  PHP
关注(0)|答案(1)|浏览(155)

此问题已在此处有答案

How to modify an array's values by a foreach loop?(2个答案)
1小时前关闭
我想在多维数组中应用ksort。目标是对每个级别的数字索引进行排序。
我试着做一个函数来做到这一点,但它不起作用。

function ksort_r( array &$array ){   /* ksort() for multi-dimensional array*/
    ksort( $array );
    foreach ( $array as $key=>$item ){
        if( is_array( $item ) ){
            ksort_r( $item );
        }
    }
}

示例

$array = array( 
   1 => array(
        "columns" => array(
             2 => array(),
             0 => array(),
             1 => array(),
        )
   ),
   0 => array(
        "columns" => array(
             2 => array(),
             1 => array(),
             0 => array(),
        )
   )
)

output wishes :

array( 
   0 => array(
        "columns" => array(
             0 => array(),
             1 => array(),
             2 => array(),
        )
   ),
   1 => array(
        "columns" => array(
             0 => array(),
             1 => array(),
             2 => array(),
        )
   )
)
toe95027

toe950271#

你也忘了传递foreach中的值作为引用:

foreach ( $array as $key=> &$item ) {

或者用排序后的$item更新数组索引:

ksort_r($item);
$array[$key] = $item;

相关问题