What are the better sorting methods? array ([0] = & gt; array (& nbsp; 'name' = & gt; & quot; a & quot;, & nbsp; 'Time' = & gt; '000000'), [1] = & gt; array (& nbsp; 'name' = & gt; what are the better sorting methods?
Array (
[0] => array (
'Name' => "",
'Time' => '123 '),
[1] => array (
'Name' => "a9 ",
'Time' => '123 '),
[2] => array (
'Name' => "hdhdjd ",
'Time' => '123 '),
[3] => array (
'Name' => "",
'Time' => '123 '),
[4] => array (
'Name' => "dr ",
'Time' => '123 '),
);
Is an array sorted by time
This should be done now
Array (
[0] => array (
'Name' => "",
'Time' => '123 '),
[1] => array (
'Name' => "",
'Time' => '123 '),
[2] => array (
'Name' => "a9 ",
'Time' => '123 '),
[3] => array (
'Name' => "hdhdjd ",
'Time' => '123 '),
[4] => array (
'Name' => "dr ",
'Time' => '123 '),
);
Put the same name together. The order of the first appearance is large.
I don't know how to write code.
------ Solution --------------------
PHP code
$ Ar = array (0 => array ('name' => "a", 'Time' => '123 '), 1 => array ('name' => "a9", 'Time' => '000000'), // 856565? There is a problem with the sample data. it cannot be seen that the data is sorted by time! 2 => array ('name' => "hdhdjd", 'Time' => '000000'), 3 => array ('name' => "", 'Time' => '20140901'), 4 => array ('name' => "dr", 'Time' => '20140901 '),); $ result = array (); $ len = count ($ ar); for ($ I = 0; $ I <$ len; $ I ++) {$ result [] = array_shift ($ ar); for ($ j = 0; $ j <count ($ ar); $ j ++) {if ($ ar [$ j] ['name'] = $ result [count ($ result)-1] ['name']) {$ result [] = array_splice ($ ar, $ j, 1); break ;}} echo''; Print_r ($ result);/* Array ([0] => Array ([name] => a [time] => 879798) [1] => Array ([0] => Array ([name] => a [time] => 800000 )) [2] => Array ([name] => a9 [time] => 856565) [3] => Array ([name] => hdhdjd [time] => 815465) [4] => Array ([name] => dr [time] => 789898) [5] => )*/
------ Solution --------------------
A little problem. modify the following:
PHP code
$ Result = array (); $ len = count ($ ar); for ($ I = 0; $ I <$ len-1; $ I ++) {$ result [] = array_shift ($ ar); for ($ j = 0; $ j <count ($ ar)-1; $ j ++) {if ($ ar [$ j] ['name'] = $ result [count ($ result)-1] ['name']) {$ item = array_splice ($ ar, $ j, 1); $ result [] = $ item [0]; break ;}}}
------ Solution --------------------
C/C ++ code
"a", 'time' => '879798'), array( 'name' => "a9", 'time' => '85665565'), array( 'name' => "dr", 'time' => '8154465'), array( 'name' => "a", 'time' => '800000'), array( 'name' => "dr", 'time' => '789898'),);$names = array();$index = array();array_walk($arr, function($val, $key){ global $names; global $index; $names[] = $val['name']; $index[] = $key; });array_multisort($names, $index, $arr);print_r($arr);?>