一個數組$a0有N個元素,要將其中第3個元素,排在數組的首位。
第一種做法是:
取出第3個元素,賦值給變量$a
unset 第3個元素
array_unshift 將$a添加到數組頭部。
如果是數字下標的數組,這樣是可以的。可如果是字符串做為下標,array_unshift會破壞下標,都變成了數字,以0開始計數。
解決方案為:
取出第3個元素,定義成一個單一數組 $a1
unset第3個元素,更新數組$a0
array_merge($a1,$a0)。
使用 array_merge 不會破壞數組下標。
示例:
<?php $array1 = array ( 0 => array ( 'top' => 'true', 'path' => 'cPath=9', 'current' => false, 'name' => 'Women', 'image' => NULL, 'has_sub_cat' => true, ), 1 => array ( 'top' => 'true', 'path' => 'cPath=10', 'current' => false, 'name' => 'Men', 'image' => NULL, 'has_sub_cat' => false, ), 2 => array ( 'top' => 'true', 'path' => 'cPath=1', 'current' => false, 'name' => 'Accessories', 'image' => '', 'has_sub_cat' => false, ), 3 => array ( 'top' => 'true', 'path' => 'cPath=2', 'current' => false, 'name' => 'New Arrival', 'image' => '', 'has_sub_cat' => false, ), 4 => array ( 'top' => 'true', 'path' => 'cPath=4', 'current' => true, 'name' => 'Styles', 'image' => '', 'has_sub_cat' => true, ), 5 => array ( 'top' => 'false', 'path' => 'cPath=4_5', 'current' => false, 'name' => 'Basketball Shoes', 'image' => '', 'has_sub_cat' => false, ), 6 => array ( 'top' => 'false', 'path' => 'cPath=4_6', 'current' => false, 'name' => 'Football Shoes', 'image' => '', 'has_sub_cat' => false, ), 7 => array ( 'top' => 'false', 'path' => 'cPath=4_7', 'current' => true, 'name' => 'Tennis Shoes', 'image' => '', 'has_sub_cat' => false, ) ); var_export($array1); echo "<br /><br /><br />\n\r"; $temp_array = array(); global $temp_array,$rootcid; foreach($array1 as $k=>$v){ if($v['current'] == true){ $rootcids = explode('_', str_replace('cPath=', '', $v['path'])); $rootcid = $rootcids[0]; break; } } foreach($array1 as $k=>$v){ $ifrootcid = explode('_', str_replace('cPath=', '', $v['path'])); if($rootcid==$ifrootcid[0]){ $temp_array[] = $v; unset($array1[$k]); } } //$array1 = array_values($array1); var_export($array1); echo "<br /><br /><br />\n\r"; //var_export($temp_array); $array1 = array_merge($temp_array, $array1); var_export($array1); ?>
補充:
//array_splice也是個不錯的選擇
<?php $arr = array( 'key1' => 'a', 'key2' => 'b', 'key3' => 'c' ); $item = $arr['key3']; unset($arr['key3']); array_splice($arr, 0, 0, $item); var_export($arr); ?>
打完收工。