当前位置: 首页 > 知识库问答 >
问题:

如何在PHP中按内部数组的长度对二维数组进行排序?

曾歌者
2023-03-14

有人能帮我吗?我尝试按内部数组的长度(降序)对二维数组进行排序。

此数组:

Array
    (
      [0] => Array
        (
          [0] => "a"
        )

      [1] => Array
        (
          [0] => "a"
          [1] => "b"
          [2] => "c"
        )

      [2] => Array
        (
          [0] => "a"
          [1] => "b"
        )
    )

应该会产生这个排序的数组:

Array
    (
      [0] => Array
        (
          [0] => "a"
          [1] => "b"
          [2] => "c"
        )

      [1] => Array
        (

          [0] => "a"
          [1] => "b"

        )

      [2] => Array
        (
          [0] => "a"

        )
    )

你有提示吗?

共有2个答案

干鑫鹏
2023-03-14

是的,使用usort元素count()排序。

<?php

header("Content-type: text/plain");

$array = array(
    array(
        "item1" => "key1",
        "item2" => "key2",
    ),
    array(
        "item1" => "key1",
        "item2" => "key2",
        "item3" => "key3"
    ),
    array(
        "item1" => "key1",
    )
);

usort($array, function($el1, $el2) {
    if (count($el1) === count($el2)) {
        return 0;
    }
    return count($el1) < count($el2) ? 1 : -1;
});

print_r($array);
魏朗
2023-03-14
// Comparison function
function cmp($a, $b) {
    $ca = count($a);
    $cb = count($b);
    if($ca == $cb)
        return 0;
    return ($ca < $cb ) ? -1 : 1;
}

// Sort the array
uasort($array, 'cmp');
 类似资料:
  • 尝试编写一个Python函数:def compare_lengths(x,y,z) 它接受三个数组作为参数,检查它们的长度,并按长度顺序将它们作为三个数组返回。 例如,如果函数接受[1,2,3]、[10,20,30,40]和[65,32,7]作为输入,则希望它返回([1,2,3]、[65,32,7]、[10,20,30,40])或([65,32,7]、[1,2,3]、[10,20,30,40])

  • 问题内容: 我正在尝试根据内部数组中的特定值对我的PHP哈希表进行排序。数据结构如下所示: 我已经尝试过 ksort , sort , usort, 但是似乎没有任何作用。我正在尝试根据 名称键 向下两级进行排序。 这是我尝试使用usort的尝试: 有没有简单的方法可以做到这一点,或者我需要编写一个自定义排序功能? 问题答案: 思考,更有用和实用的 如何使用

  • 问题内容: 我有2d数组,尺寸为3x10,我想按从低到高的第二行中的值进行排序。 问题答案: Python本身没有“ 2d数组”-它具有(1d)内置列表,以及(1d)标准库模块array中的数组。有第三方库,例如它确实提供了Python的使用多维数组,当然你会提这样的第三方库,如果你是“Python中的”使用其中的一部分,而不是只是说, 正确的 ? -) 因此,我假设“ 2d数组”是指列表列表,例

  • 问题内容: 我已将CSV数据加载到多维数组中。这样,每个“行”都是一条记录,每个“列”都包含相同类型的数据。我正在使用下面的功能加载我的CSV文件。 我需要能够指定要排序的列,以便重新排列行。其中一列包含格式为的日期信息,我希望能够以最新日期为第一行进行排序。 问题答案: 您可以使用array_multisort() 尝试这样的事情: 对于PHP> = 5.5.0,只需提取列进行排序即可。无需循环

  • 问题内容: 我做了一个字谜游戏机,并且有一系列正面匹配。麻烦的是它们都以不同的顺序排列,我希望能够对数组进行排序,以使最长的数组值首先出现。 有人对如何执行此操作有任何想法吗? 问题答案: 使用http://us2.php.net/manual/en/function.usort.php 使用此自定义功能 如果要保留旧索引,请使用uasort;如果您不关心,请使用usort。 另外,我认为我的版本

  • 问题内容: 请原谅我这是多余的还是超基本的。我要从R进入Python / Numpy,并且很难在脑海里翻转事物。 我有一个维数组,我想使用索引值的另一个n维数组进行排序。我知道我可以将其包装成一个循环,但是似乎应该有一种非常简洁的Numpyonic方式将其击败并提交。这是设置n = 2的问题的示例代码: 所以现在我有一个2 x 5的随机数数组和2 x 5的索引。我已经阅读了约10次帮助,但显然我的