php數組值 增加 刪除 尋找操作方法詳解

來源:互聯網
上載者:User

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 )

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.