php刪除特定數組值
首先
| 代碼如下 |
複製代碼 |
| var_dump($context['linktree']); |
得到
| 代碼如下 |
複製代碼 |
array(3) { [0]=> array(2) { ["url"]=> string(52) “http://127.0.0.1/testforum.cityofsteam.com/index.php” ["name"]=> string(28) “City of Steam Official Forum” } [1]=> array(2) { ["url"]=> string(55) “http://127.0.0.1/testforum.cityofsteam.com/index.php#c1″ ["name"]=> string(28) “City of Steam Official Forum” } [2]=> array(2) { ["url"]=> string(62) “http://127.0.0.1/testforum.cityofsteam.com/index.php?board=4.0″ ["name"]=> string(12) “Announcement” } } |
我要去掉中間那個。
用:unset($context['linktree']['1']);
結果:
| 代碼如下 |
複製代碼 |
array(2) { [0]=> array(2) { ["url"]=> string(52) “http://127.0.0.1/testforum.cityofsteam.com/index.php” ["name"]=> string(28) “City of Steam Official Forum” } [2]=> array(2) { ["url"]=> string(62) “http://127.0.0.1/testforum.cityofsteam.com/index.php?board=4.0″ ["name"]=> string(12) “Announcement” } } |
就少了一個[1]
讓這中間的1自動編號:
| 代碼如下 |
複製代碼 |
Array ( [0] => apple [1] => banana [3] => dog )
|
但是這種方法的最大缺點是沒有重建數組索引,就是說,數組的第三個元素沒了。
經過查資料後,原來PHP提供了這個功能,只不過很間接。這個函數是array_splice()。
為了使用方便,我封裝成了一個函數,方便大家使用:
| 代碼如下 |
複製代碼 |
<?php function array_remove(&$arr, $offset) { array_splice($arr, $offset, 1); } $arr = array('apple','banana','cat','dog'); array_remove($arr, 2); print_r($arr); ?> |
經過測試可以知道,2的位置這個元素被真正的刪除了,並且重建立立了索引。
程式運行結果:
| 代碼如下 |
複製代碼 |
Array ( [0] => apple [1] => banana [2] => dog ) |
php判斷 數組中的數值
有專門的函數,不要用for迴圈,系統函數能實現快速搜尋:
in_array
(PHP 4, PHP 5)
in_array — 檢查數組中是否存在某個值
說明
bool in_array ( mixed $needle, array $haystack [, bool $strict] )
在 haystack 中搜尋 needle,如果找到則返回 TRUE,否則返回 FALSE。
如果第三個參數 strict 的值為 TRUE 則 in_array() 函數還會檢查 needle 的類型是否和 haystack 中的相同。
注意: 如果 needle 是字串,則比較是區分大小寫。
注意: 在 PHP 版本 4.2.0 之前,needle 不允許是一個數組。
例 292. in_array() 例子
| 代碼如下 |
複製代碼 |
<?php $os = array("Mac", "NT", "Irix", "Linux"); if (in_array("Irix", $os)) { echo "Got Irix"; } if (in_array("mac", $os)) { echo "Got mac"; } ?>
|
第二個條件失敗,因為 in_array() 是區分大小寫,所以以上程式顯示為:
Got Irix
例 293. in_array() 嚴格類型檢查例子
| 代碼如下 |
複製代碼 |
<?php $a = array('1.10', 12.4, 1.13); if (in_array('12.4', $a, true)) { echo "'12.4' found with strict checkn"; } if (in_array(1.13, $a, true)) { echo "1.13 found with strict checkn"; } ?> 上例將輸出: 1.13 found with strict check |
例 294. in_array() 中用數組作為 needle
| 代碼如下 |
複製代碼 |
<?php $a = array(array('p', 'h'), array('p', 'r'), 'o'); if (in_array(array('p', 'h'), $a)) { echo "'ph' was foundn"; } if (in_array(array('f', 'i'), $a)) { echo "'fi' was foundn"; } if (in_array('o', $a)) { echo "'o' was foundn"; } ?> 上例將輸出: 'ph' was found 'o' was found |
向一個數組中加入數值
我們可以通過函數來實現,將一個或多個元素插入到數組中去,也可以直接添加進去。
(1)向數組中直接添加資料,新元素的下標是從原數組下標最大值之後開始的。
(2)array_unshift()函數在數組的開頭添加一個或多個元素。
文法如下:
int array_unshift ( array &array, mixed var [,mixed ...]) ;
array_unshift()將傳入的元素插入到array數組的開頭。元素是作為整體被插入的,傳入元素將保持同樣的順序。所有的數值鍵名將從0開始重新計數,文字鍵名保持不變。
(3)array_push()函數將一個或多個單元添加到數組的末尾。
文法:
int array_push ( array &array, mixed var [, mixed ...]) ;
array_push()將array當成一個棧,並將傳入的變數添加到array的末尾。該函數返回數組新的單元總數。向數組中添加資料的樣本如下。
樣本:
| 代碼如下 |
複製代碼 |
<?php $shili = array (“1″,”2″,”3″,”4″) ; $shili[]=5 ; //直接添加資料 print_r ( $shili ) ; echo “<br>” ; $shili2 = array (“m”,”n”) ; array_unshift ($shili2,”o”,”p”) ; //添加元素於數組的開頭 print_r ( $shili2 ) ; echo “<br>” ; $shili3 = array (“Php”) ; array_push ($shili3, “MySQL”,”Apache”) ; //添加元素於數組的末尾 print_r ($shili3) ; ?> 結果為: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) Array ( [0] => o [1] => p [2] => m [3] => n ) Array ( [0] => Php [1] => MySQL [2] => Apache )
|