PHP 多维数组排序与键


PHP Multi dimensional array sort with key

我有一个如下所示的数组

Array
(
[1236669] => Array
    (
        [banner_type] => OMAX
        [bannerid] => 1236669
        [zone_id] => 119789
        [zone_name] => OMAX-Supply - Mobile Web Tablet Interstitial
        [zone_manager_id] => 76
        [zone_manager_name] => Thumbtribe Manager
        [banner_name] => THUMBTRIBE_MW_TAB_Interstitial
        [banner_manager_id] => 288
        [banner_manager_name] => OMAX Manager
        [prev_day_req] => 0
    )
)

我想根据二级键对 2-D 数组进行排序,这意味着我希望数组是:

Array
(
[1236669] => Array
    (
        [banner_type] => OMAX
        [bannerid] => 1236669
        [banner_name] => THUMBTRIBE_MW_TAB_Interstitial
        [banner_manager_id] => 288
        [banner_manager_name] => OMAX Manager
        [prev_day_req] => 0
        [zone_id] => 119789
        [zone_name] => OMAX-Supply - Mobile Web Tablet Interstitial
        [zone_manager_id] => 76
        [zone_manager_name] => Thumbtribe Manager
    )
)

我尝试了排序,ksort,array_multisort但没有任何效果

您必须在主数组的每个子数组上使用 ksort。 像这样...

<?php
$array =array ( 1236 => array
        (
            'banner_type' => 'OMAX',
            'bannerid' => 12369,
            'zone_id' => 1197,
            'zone_name' => 'OMAX-Supply - Mobile Web Tablet Interstitial',
            'zone_manager_id' => 76,
        )
    );
foreach ($array as $key => $arr){
    ksort($arr);
    $array[$key] = $arr;
}
echo '<pre>';
    print_r($array);
?>

单行解决方案:

array_map(function ($item) { ksort($item); return $item; }, $input);

array_mapphp 遍历所有关联数组,并使用 ksortphp 对它们的键进行排序。

亲爱的请尝试

此代码如果你的数组像这样,那么输出变成像

     <?php
        $marks =  Array
(
1236669 => Array
    (
        'banner_type' => 'OMAX',
        'bannerid' => '1236669',
        'zone_id' => '119789',
        'zone_name' => 'OMAX-Supply - Mobile Web Tablet Interstitial',
        'zone_manager_id' => '76',
        'zone_manager_name' => 'Thumbtribe Manager',
        'banner_name' => 'THUMBTRIBE_MW_TAB_Interstitial',
        'banner_manager_id' => '288',
        'banner_manager_name' => 'OMAX Manager',
        'prev_day_req' => '0'
    )
);

ksort($marks);
echo "<pre>";
print_r($marks);
echo "</pre>";
?> 

输出

Array
(
      [1236669] => Array
      (
         [banner_type] => OMAX
         [bannerid] => 1236669
         [zone_id] => 119789
         [zone_name] => OMAX-Supply - Mobile Web Tablet Interstitial
         [zone_manager_id] => 76
         [zone_manager_name] => Thumbtribe Manager
         [banner_name] => THUMBTRIBE_MW_TAB_Interstitial
         [banner_manager_id] => 288
         [banner_manager_name] => OMAX Manager
         [prev_day_req] => 0
     )
 )

祝你好运