方法1:
1 <?php 2 $arr1 = array(1,3, 5,7,8); 3 $key = array_search(3, $arr1); 4 if ($key !== false) 5 array_splice($arr1, $key, 1); 6 var_dump($arr1); 7 ?>
返回結果:array(4) { [0]=> int(1) [1]=> int(5) [2]=> int(7) [3]=> int(8) }
PHP array_splice() 函數
array_splice() 函數與 array_slice() 函數類似,選擇數組中的一系列元素,但不返回,而是刪除它們並用其它值代替。如果提供了第四個參數,則之前選中的那些元素將被第四個參數指定的數組取代。
最后生成的數組將會返回。
語法:array_splice(array,offset,length,array)
array:必需。規定數組。
offset:必需。數值。如果 offset 為正,則從輸入數組中該值指定的偏移量開始移除。如果 offset 為負,則從輸入數組末尾倒數該值指定的偏移量開始移除。
length:可選。數值。如果省略該參數,則移除數組中從 offset 到 結尾的所有部分。如果指定了 length 並且為正值,則移除這么多元素。如果指定了 length 且為負值,則移除從 offset 到數組末尾倒數 length 為止中間所有的元素。
array:被移除的元素由此數組中的元素替代。如果沒有移除任何值,則此數組中的元素將插入到指定位置。
如果函數沒有刪除任何元素 (length=0),則替代數組將從 start 參數的位置插入。
注:W3school array_splice() 鏈接:http://www.w3school.com.cn/php/func_array_splice.asp
方法2:
1 <?php 2 $arr2 = array(1,3, 5,7,8); 3 foreach ($arr2 as $key=>$value) 4 { 5 if ($value === 3) 6 unset($arr2[$key]); 7 } 8 var_dump($arr2); 9 ?>
返回結果:array(4) { [0]=> int(1) [2]=> int(5) [3]=> int(7) [4]=> int(8) }
總結:可以看到使用array_splice()刪除特定值和使用unset刪除特定值是有區別的。
array_splice()函數刪除的話,數組的索引值也變化了,並且重新建立了索引。
unset()函數刪除的話,數組的索引值沒有變化,就是說這種方法的最大缺點是沒有重建數組索引。
