php - 按PHP中子数组的值对数组进行排序

我有一个由数组组成的数组。 我想用子数组的属性对父数组进行排序。 下面是一个例子


array(2){


 [0]=> array(3){


 [0]=> string(6)"105945"


 [1]=> string(10)"First name"


 [2]=> float(0.080878465391)


 }


 [1]=> array(3) {


 [0]=> string(6)"109145"


 [1]=> string(11)"Second name"


 [2]=> float(0.0504154818384)


 }


}



我想在子数组中以 [2] 升序对父数组进行排序,因此在这种情况下结果将是子数组反转( .05,08 )

时间:

你可以使用 usort 函数:


$arr = array(


 array("105945","First name",0.080878465391),


 array("109145","Second name",0.0504154818384)


 );



function cmp($a, $b) {


 if ($a[2] == $b[2]) {


 return 0;


 }


 return ($a[2] <$b[2])? -1 : 1;


}



usort($arr,"cmp");



例如模式使用 array_multisort 如图 #3. 所示

例如:


$sort = array();


foreach ($data as $key => $row) {


 $sort[$key] = $row['basis'];


}


array_multisort($sort, SORT_ASC, $data);



其中 $data 是你的数据 array,basis 是用于排序的元素。

在 PHP


usort($arr, function ($a, $b) {


 return $a[2] <=> $b[2];


 });



请参阅:http://php.net/manual/de/migration70.new-features.php

请参见此页


http://php.net/manual/en/function.sort.php



或示例


 <?php 


function multisort($array, $sort_by) {


 foreach ($array as $key => $value) {


 $evalstring = '';


 foreach ($sort_by as $sort_field) {


 $tmp[$sort_field][$key] = $value[$sort_field];


 $evalstring. = '$tmp[''. $sort_field. ''], ';


 }


 }


 $evalstring. = '$array';


 $evalstring = 'array_multisort('. $evalstring. ');';


 eval($evalstring);



 return $array;


} 



$test = array(


 array( 'a' => '1', 'b' => '3'),


 array( 'a' => '2', 'b' => '1'),


 array( 'a' => '1', 'b' => '1'));



echo 'Unsorted: ';


print_r($test);



$result = multisort( $test, array('a','b') );



echo 'Sorted: ';


print_r($result);


?>



Result:



Unsorted: Array


(


 [0] => Array


 (


 [a] => 1


 [b] => 3


 )



 [1] => Array


 (


 [a] => 2


 [b] => 1


 )



 [2] => Array


 (


 [a] => 1


 [b] => 1


 )



)


Sorted: Array


(


 [0] => Array


 (


 [a] => 1


 [b] => 1


 )



 [1] => Array


 (


 [a] => 1


 [b] => 3


 )



 [2] => Array


 (


 [a] => 2


 [b] => 1


 )



)



...