【问题标题】:How to sort 2D array values in ascending order in PHP?如何在 PHP 中按升序对二维数组值进行排序?
【发布时间】:2014-11-18 12:35:12
【问题描述】:

这是我的基本 PHP 代码。只有for循环,我想用这个for循环对它进行排序only

<?php
//this is my 2-d array
$arr=array(array(5,9),
        array(7,1),
        array(3,2),
        array(6,4),
        array(2,8));

/*my basic for loop concept*/
    for($k=0;$k<count($arr);$k++)//for loop for key
    {
        for($v=0;$v<count($arr[$k]);$v++)//for loop for value
        {
            for($i=0;$i<5;$i++)//for loop to iterate
            {
                for($j=0;$j<3;$j++)//for loop to iterate
                {
                    print_r($arr[$k][$v].'<br>');
                    if($arr[$k][$v] > $arr[$i][$j])
                    {
                    $temp = $arr[$k][$v];
                    $arr[$k][$v]=$arr[$i][$j];
                    $arr[$i][$j] = $temp;
                    print_r($arr[$i][$j].'<br>');
                    }
                }
            }

        }
    }
?>

【问题讨论】:

  • 请显示输入数据示例和所需输出。
  • 你想在这里输出相同的:9,8,7,6,5,4,3,2,1 吗?
  • 我想要的输出:$arr=array(array(1,2), array(2,3), array(4,5), array(6,7), array(8,9 ));
  • 我的简单输入是:排序前:Array ( [0] => Array ( [0] => 5 [1] => 9 ) [1] => Array ( [0] => 7 [1] => 1 ) [2] => 数组 ( [0] => 3 [1] => 2 ) [3] => 数组 ( [0] => 6 [1] => 4 ) [4 ] => 数组 ( [0] => 2 [1] => 8 ) )

标签: php arrays loops for-loop multidimensional-array


【解决方案1】:

可以使用 PHP 的 array_multisort() 函数

对于您的代码,解决方案将是不使用循环。

<?php
    $arr=array(array(5,9),
        array(7,1),
        array(3,2),
        array(6,4),
        array(2,8));

    array_multisort($arr, SORT_ASC);     // For ascending
    array_multisort($arr, SORT_DESC);       // For Descending
    print_r($arr);
    ?>

如果你也想对子数组进行排序,那么你可以使用循环并可以调用 array_multisort() 函数,如

array_multisort($arr[$index], SORT_ASC);  

我希望这会有所帮助。

【讨论】:

  • @ĐứcĐoànQuang: 它将根据子数组的第一个元素对数组进行排序
  • 感谢您的帮助,但我只想使用 for 循环来完成
【解决方案2】:

希望对你有所帮助:

<?php
//this is my 2-d array
$arr=array(array(5,9),
        array(7,1),
        array(3,2),
        array(6,4),
        array(2,8));

for($i=0;$i<count($arr);$i++){
    array_multisort($arr[$i], SORT_ASC);
}
print_r($arr);
?>

【讨论】:

  • 那么你想要一个带有排序值的数组吗?像数组([0] => 1 [1] => 2 等等.....
猜你喜欢
  • 1970-01-01
  • 2021-04-11
  • 1970-01-01
  • 2021-05-23
  • 1970-01-01
  • 1970-01-01
  • 2013-08-17
  • 2013-04-12
  • 2020-10-05
相关资源
最近更新 更多