Php 数组按值排序数字字符

Php 数组按值排序数字字符,php,multidimensional-array,sorting,chars,Php,Multidimensional Array,Sorting,Chars,嗨,我想我有一个这样的数组: [0]=>[ [0]=>'Hey', [1]=>'H', [2]=>'He', ] 现在我想按数字字符排序并返回如下内容: [0]=>[ [0]=>'H', [1]=>'He', [2]=>'Hey', ] 也许答案是数组排序,但我无法做到这一点。另外,我不想循环数组来检查值的字符数,但如果这是我需要使用的唯一方法:P 顺便说一句 如何返回按字符的['name']键号ASC

嗨,我想我有一个这样的数组:

[0]=>[
   [0]=>'Hey',
   [1]=>'H',
   [2]=>'He',



]
现在我想按数字字符排序并返回如下内容:

[0]=>[
   [0]=>'H',
   [1]=>'He',
   [2]=>'Hey',
]
也许答案是数组排序,但我无法做到这一点。另外,我不想循环数组来检查值的字符数,但如果这是我需要使用的唯一方法:P

顺便说一句

如何返回按字符的['name']键号ASC h-he-hey-heyh-heyhey排序的相同数组

array(5) {
  [0]=>
  array(2) {
    ["id"]=>
    object(MongoId)#26 (1) {
      ["$id"]=>
      string(24) "4e72858ccaa47ca608030000"
    }
    ["name"]=>
    string(4) "h"
  }
  [1]=>
  array(2) {
    ["id"]=>
    object(MongoId)#29 (1) {
      ["$id"]=>
      string(24) "4e72858ccaa47ca608040000"
    }
    ["name"]=>
    string(10) "hey"
  }
  [2]=>
  array(2) {
    ["id"]=>
    object(MongoId)#31 (1) {
      ["$id"]=>
      string(24) "4e72858ccaa47ca608400000"
    }
    ["name"]=>
    string(1) "heyhey"
  }
  [3]=>
  array(2) {
    ["id"]=>
    object(MongoId)#33 (1) {
      ["$id"]=>
      string(24) "4e72858ccaa47ca6081a0000"
    }
    ["name"]=>
    string(6) "he"
  }
  [4]=>
  array(2) {
    ["id"]=>
    object(MongoId)#35 (1) {
      ["$id"]=>
      string(24) "4e72858ccaa47ca6083d0000"
    }
    ["name"]=>
    string(3) "heyh"
  }
}

如果要按字符数排序,这是一种方法。它允许您定义自己的排序函数

function lengthsort($s1, $s2) {
    if (strlen($s1['name']) < strlen($s2['name'])) {
        return -1;
    } elseif (strlen($s1['name']) > strlen($s2['name'])) {
        return 1;
    } else {
        return 0;
    }
}
usort($array, 'lengthsort');

如果要按字符数排序,这是一种方法。它允许您定义自己的排序函数

function lengthsort($s1, $s2) {
    if (strlen($s1['name']) < strlen($s2['name'])) {
        return -1;
    } elseif (strlen($s1['name']) > strlen($s2['name'])) {
        return 1;
    } else {
        return 0;
    }
}
usort($array, 'lengthsort');
看一看wich,它允许您定义自己的排序函数:

$myarray = array('Hey','H','He');

usort($myarray,function($a, $b){
  if (strlen($a) == strlen($b)) {
    return 0;
  }
  return (strlen($a) < strlen($b)) ? -1 : 1;
});

var_dump($myarray); // array('H','He','Hey')
请注意,我在这里使用的是一个内联函数,在php 5.3+中可以使用它-在php的较低版本中,您必须定义一个传统函数并将该函数的名称传递给usort

$myarray = array('Hey','H','He');

usort($myarray,function($a, $b){
  if (strlen($a) == strlen($b)) {
    return 0;
  }
  return (strlen($a) < strlen($b)) ? -1 : 1;
});

var_dump($myarray); // array('H','He','Hey')
请注意,我在这里使用的是一个内联函数,这在php 5.3+中是可能的-在较低版本的php中,您必须定义一个传统函数并将该函数的名称传递给usort,php允许您指定一个自定义排序函数:

<?php
    $arr = array(array('Hey', 'H', 'He'));
    print_r($arr);

    usort($arr[0], function($a, $b) {
        return strlen($a) - strlen($b);
    });

    print_r($arr);
?>
PHP允许您指定自定义排序函数:

<?php
    $arr = array(array('Hey', 'H', 'He'));
    print_r($arr);

    usort($arr[0], function($a, $b) {
        return strlen($a) - strlen($b);
    });

    print_r($arr);
?>

它们没有像php中的array_sort那样的函数,您只需要使用sort函数,它根据值对数组进行排序,并保持键信息的原样

$arr=数组'0'=>数组'0'=>嘿','1'=>H','2'=>他'

foreach($arr as $k=>$v):
$arr1 = $v;
sort($arr1);
print_r($arr1);
endforeach;

?>

他们的函数与php中的array\u sort函数不同,您只需使用sort函数,该函数根据值对数组进行排序,并保持键信息不变

$arr=数组'0'=>数组'0'=>嘿','1'=>H','2'=>他'

foreach($arr as $k=>$v):
$arr1 = $v;
sort($arr1);
print_r($arr1);
endforeach;

?>

实际问题是什么?因为它是多维数组,所以你有困难吗?没有,我只需要知道怎么做:实际的问题是什么?你有困难吗,因为它是一个多维数组?没有,我只需要知道怎么做:我编辑了我的问题,因为我需要一个更深刻的脚本,我想。thx@Ipsuk:usort使用的函数将接受数组的元素,因此在该函数中,您可以像使用原始数组的元素一样使用它们。我更新了我的示例来演示这一点。我编辑了我的问题,因为我需要一个更深入的脚本。thx@Ipsuk:usort使用的函数将接受数组的元素,因此在该函数中,您可以像使用原始数组的元素一样使用它们。我更新了我的示例来演示这一点。我编辑了我的问题,因为我需要一个更深入的脚本。谢谢;我编辑了我的问题,因为我想我需要一个更深刻的剧本。谢谢;我编辑了我的问题,因为我想我需要一个更深刻的剧本。谢谢;我编辑了我的问题,因为我想我需要一个更深刻的剧本。谢谢;我编辑了我的问题,因为我想我需要一个更深刻的剧本。谢谢;我编辑了我的问题,因为我想我需要一个更深刻的剧本。谢谢;