【问题标题】:problem in sorting 2-d array sort二维数组排序中的问题
【发布时间】:2025-12-07 11:05:03
【问题描述】:

我在根据键对这个二维数组进行排序时遇到问题,例如(示例代码中的 33) 所以输出看起来像 7,7,28,33,35,38。这里是示例代码。

提前致谢

<?php
$arr=array ( 0 => array ( 33 => 'SY2', ), 1 => array ( 38 => 'PR25', ), 2 => array ( 7 => 'SK22', ), 3 => array ( 7 => 'BT1', ), 4 => array ( 28 => 'WN8', ), 5 => array ( 35 => 'ST21', ));
print_r($arr);
$arrnew=array();
$str=0;
for($j=0;$j<count($arr);$j++){
 foreach($arr[$j] as $key=>$val){
  if($str == 0)
   $str=$arrnew[$key];
  if($str < $arrnew[$key])

  //$arrnew[$key]=$val;
  //echo $key."<BR>";
 }
}

print_r($arrnew);

【问题讨论】:

标签: php


【解决方案1】:
$arr=array ( 0 => array ( 33 => 'SY2', ), 1 => array ( 38 => 'PR25', ), 2 => array ( 7 => 'SK22', ), 3 => array ( 7 => 'BT1', ), 4 => array ( 28 => 'WN8', ), 5 => array ( 35 => 'ST21', ));
foreach($arr as $key => $val)
{
 foreach ($val as $key2 => $val2)
 {
  $sort[$key] = $key2;
 }
}
array_multisort($sort, SORT_ASC, $arr);
print_r($arr);

【讨论】:

    【解决方案2】:

    如果每个子数组只有一个键值对,则可以从中创建一个新数组:

    // copy data from $arr to $newArray:
    $newArray = array();
    foreach($arr as $v)
        $newArray[array_keys($v)[0]] = $v[0];
    
    // sort newArray:
    ksort($newArray)
    
    // if you want to, you can copy it back:
    $arr = array();
    foreach($newArray as $k => $v)
        array_push($arr, array($k, $v));
    

    就是这样。享受吧!

    【讨论】: