排序有什麼更好的方法
array(
[0] =>array(
'name' => "a",
'time' => '879798'),
[1] = >array(
'name' => "a9",
'time' => '85665565'),
[2] = >array(
'name' => "hdhdjd",
'time' => '8154465'),
[3] = >array(
'name' => "a",
'time' => '800000'),
[4] = >array(
'name' => "dr",
'time' => '789898'),
);
是一個已經按照time排序好的數組
現在要排這樣
array(
[0] =>array(
'name' => "a",
'time' => '879798'),
[1] = >array(
'name' => "a",
'time' => '800000'),
[2] = >array(
'name' => "a9",
'time' => '85665565'),
[3] = >array(
'name' => "hdhdjd",
'time' => '8154465'),
[4] = >array(
'name' => "dr",
'time' => '789898'),
);
把name相同的在一起。以第一個出現的次序為大。
不知道有什麼好方式啊,代碼寫的漂亮點的。
------解決方案--------------------
PHP code
$ar = array(0 =>array( 'name' => "a", 'time' => '879798'),1 => array( 'name' => "a9", 'time' => '856565'), //85665565 ? 樣本資料有問題吧,看不出是按time排序的!2 =>array( 'name' => "hdhdjd", 'time' => '815465'),3 =>array( 'name' => "a", 'time' => '800000'),4 =>array( 'name' => "dr", 'time' => '789898'),);$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] => )*/
------解決方案--------------------
有點問題,修改一下:
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; } }}
------解決方案--------------------
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);?>