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使用的函数将接受数组的元素,因此在该函数中,您可以像使用原始数组的元素一样使用它们。我更新了我的示例来演示这一点。我编辑了我的问题,因为我需要一个更深入的脚本。谢谢;我编辑了我的问题,因为我想我需要一个更深刻的剧本。谢谢;我编辑了我的问题,因为我想我需要一个更深刻的剧本。谢谢;我编辑了我的问题,因为我想我需要一个更深刻的剧本。谢谢;我编辑了我的问题,因为我想我需要一个更深刻的剧本。谢谢;我编辑了我的问题,因为我想我需要一个更深刻的剧本。谢谢;