按照PHP中的子数组值sorting数组

我有一个由数组组成的数组。 我想通过子数组的属性对父数组进行sorting。 这是一个例子

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) } 

我想sorting父数组由[2]升序在子数组中,所以在这种情况下,结果将是颠倒的子数组(.05,08)。 这可能使用任何众多的PHPsortingfunction?

你可以使用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是您的数据数组, basis是用于sorting的元素。

例如见这个页面

 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 ) )