Php數(shù)組操作

1.定義數(shù)組

<?php
$cars=array("Volvo","BMW","Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?> 

2.獲取數(shù)組長度

<?php
 $cars=array("Volvo","BMW","Toyota");
echo count($cars);
?> 

3.遍歷數(shù)組

<?php
 $cars=array("Volvo","BMW","Toyota");
 $arrlength=count($cars);

for($x=0;$x<$arrlength;$x++)
 {
 echo $cars[$x];
 echo "<br>";
 }
?> 

4.關聯(lián)數(shù)組,類似map

key 可以是 integer 或者 string舶掖。value 可以是任意類型

1.包含有合法整型值的字符串會被轉(zhuǎn)換為整型。例如鍵名 "8" 實際會被儲存為 8善玫。
但是 "08" 則不會強制轉(zhuǎn)換,因為其不是一個合法的十進制數(shù)值焙畔。
2.浮點數(shù)也會被轉(zhuǎn)換為整型旷祸,意味著其小數(shù)部分會被舍去贡未。例如鍵名 8.7 
實際會被儲存為 8。
3.布爾值也會被轉(zhuǎn)換成整型锚国。即鍵名 true 實際會被儲存為 1 而鍵名 false 會被儲存為 0
4.Null 會被轉(zhuǎn)換為空字符串腕巡,即鍵名 null 實際會被儲存為 ""。
5.數(shù)組和對象不能被用為鍵名血筑。堅持這么做會導致警告:Illegal offset type绘沉。
這里有兩種創(chuàng)建關聯(lián)數(shù)組的方法:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
or:
$age['Peter']="35";
 $age['Ben']="37";
 $age['Joe']="43"; 

遍歷

<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
foreach($age as $x=>$x_value)
 {
 echo "Key=" . $x . ", Value=" . $x_value;
 echo "<br>";
 }
// 自 PHP 5.4 起
$array = [    "foo" => "bar",    "bar" => "foo",];
?>

5.多維數(shù)組

<?php
// 二維數(shù)組:
$cars = array
 (
     array("Volvo",100,96),
    array("BMW",60,59),
    array("Toyota",110,100)
 );

創(chuàng)建

<?php 
$sites = array 
( 
    "runoob"=>array 
    ( 
        "菜鳥教程", 
        "http://www.runoob.com" 
    ), 
    "google"=>array 
    ( 
        "Google 搜索", 
        "http://www.google.com" 
    ), 
    "taobao"=>array 
    ( 
        "淘寶", 
        "http://www.taobao.com" 
    ) 
); 
echo $sites['runoob'][0] . '地址為:' . $sites['runoob'][1];
?> 

修改數(shù)組

<?php
$arr = array(5 => 1, 12 => 2);

$arr[] = 56;    // This is the same as $arr[13] = 56;
                // at this point of the script

$arr["x"] = 42; // This adds a new element to
                // the array with key "x"
                
unset($arr[5]); // This removes the element from the array

unset($arr);    // This deletes the whole array
?>

注意這里所使用的最大整數(shù)鍵名不一定當前就在數(shù)組中。它只要在上次數(shù)組重新生成索引后曾經(jīng)存在過就行了豺总。以下面的例子來說明:

<?php
// 創(chuàng)建一個簡單的數(shù)組
$array = array(1, 2, 3, 4, 5);
print_r($array);

// 現(xiàn)在刪除其中的所有元素车伞,但保持數(shù)組本身不變:
foreach ($array as $i => $value) {
    unset($array[$i]);
}
print_r($array);

// 添加一個單元(注意新的鍵名是 5,而不是你可能以為的 0)
$array[] = 6;
print_r($array);

// 重新索引:
$array = array_values($array);
$array[] = 7;
print_r($array);
?>
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)
Array
(
)
Array
(
    [5] => 6
)
Array
(
    [0] => 6
    [1] => 7
)

數(shù)組函數(shù)

1.unset()

函數(shù)允許刪除數(shù)組中的某個鍵喻喳。但要注意數(shù)組將不會重建索引另玖。如果需要刪除后重建索引,可以用 array_values() 函數(shù)。

<?php
$a = array(1 => 'one', 2 => 'two', 3 => 'three');
unset($a[2]);
/* will produce an array that would have been defined as
   $a = array(1 => 'one', 3 => 'three');
   and NOT
   $a = array(1 => 'one', 2 =>'three');
*/

$b = array_values($a);
// Now $b is array(0 => 'one', 1 =>'three')
?>

2.foreach 遍歷數(shù)組谦去,引用賦值

<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
    $value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
unset($value); // 最后取消掉引用
?>

更多例子

<?php
/* foreach example 1: value only */

$a = array(1, 2, 3, 17);

foreach ($a as $v) {
   echo "Current value of \$a: $v.\n";
}

/* foreach example 2: value (with its manual access notation printed for illustration) */

$a = array(1, 2, 3, 17);

$i = 0; /* for illustrative purposes only */

foreach ($a as $v) {
    echo "\$a[$i] => $v.\n";
    $i++;
}

/* foreach example 3: key and value */

$a = array(
    "one" => 1,
    "two" => 2,
    "three" => 3,
    "seventeen" => 17
);

foreach ($a as $k => $v) {
    echo "\$a[$k] => $v.\n";
}

/* foreach example 4: multi-dimensional arrays */
$a = array();
$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";

foreach ($a as $v1) {
    foreach ($v1 as $v2) {
        echo "$v2\n";
    }
}

/* foreach example 5: dynamic arrays */

foreach (array(1, 2, 3, 4, 5) as $v) {
    echo "$v\n";
}
?>

3.用 list() 給嵌套的數(shù)組解包

<?php
$array = [
    [1, 2],
    [3, 4],
];

foreach ($array as list($a, $b)) {
    // $a contains the first element of the nested array,
    // and $b contains the second element.
    echo "A: $a; B: $b\n";
}
?>
//output
A: 1; B: 2
A: 3; B: 4

list() 中的單元可以少于嵌套數(shù)組的慷丽,此時多出來的數(shù)組單元將被忽略:

<?php
$array = [
    [1, 2],
    [3, 4],
];

foreach ($array as list($a)) {
    // Note that there is no $b here.
    echo "$a\n";
}
?>
//outout
1
3

4.排序

<?php
sort($files);
print_r($files);
?>

5.數(shù)組(Array) 的賦值總是會涉及到值的拷貝。使用引用運算符通過引用來拷貝數(shù)組鳄哭。

<?php
$arr1 = array(2, 3);
$arr2 = $arr1;
$arr2[] = 4; // $arr2 is changed,
             // $arr1 is still array(2, 3)
             
$arr3 = &$arr1;
$arr3[] = 4; // now $arr1 and $arr3 are the same
?>

7.給數(shù)頭部添加元素:array_unshift();

<?php
 $arr = array(1,2,3,4,5,6,7,8); 
array_unshift($arr,8,9); //數(shù)組前面添加8,9 
print_r($arr);?>

8. 給數(shù)組尾部添加元素:array_push();

<?php 
$arr = array(1,2,3,4,5,6,7,8); 
array_push($arr,8,9); //數(shù)組后面添加
 print_r($arr);
?>

9.定義數(shù)組的長度添加元素:array_pad(array,定義數(shù)組長度,添加的值);

當定義數(shù)組長度大于數(shù)組本身長度時盈魁,在數(shù)組的尾部添加要添加的元素直至數(shù)組長度為定義的數(shù)組的長度;當數(shù)組定義長度等于或者小于數(shù)組本身的長度時窃诉,則不作操作;當數(shù)組定義的長度是負數(shù)且絕對值大于數(shù)組長度時赤套,則在數(shù)組的頭部添加元素飘痛,直至數(shù)組的長度為定義長度的絕對值長。

<?php
 $arr = array(1,2,3,4,5,6,7,8); 
$arr = array_pad($arr,10,10); 
print_r($arr);//輸出數(shù)組
 echo('<br/>'); //創(chuàng)建一個換行符
 $arr = array_pad($arr,-15,-1); 
print_r($arr); //輸出數(shù)組
?>
Paste_Image.png

10.刪除數(shù)組尾部的元素array_pop();

<?php 
$arr = array(1,2,3,4,5,6,7,8); // 返回要刪除的元素容握,輸出已刪除元素后的數(shù)組
 $a = array_pop($arr); //聲明變量a存放刪除的元素 echo($a); //輸出a 
echo('<br/>'); //創(chuàng)建一個換行符
 print_r($arr); //輸出數(shù)組arr
?>

11.刪除數(shù)組頭部的元素array_shift();

<?php
 $arr = array(1,2,3,4,5,6,7,8);
 // 刪除頭部數(shù)組元素 
$a = array_shift($arr); 
echo($a.'<br/>'); //輸出刪除的元素
 print_r($arr); // 輸出刪除元素后的數(shù)組
?>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宣脉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子剔氏,更是在濱河造成了極大的恐慌塑猖,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谈跛,死亡現(xiàn)場離奇詭異羊苟,居然都是意外死亡,警方通過查閱死者的電腦和手機感憾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門蜡励,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人阻桅,你說我怎么就攤上這事凉倚。” “怎么了嫂沉?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵稽寒,是天一觀的道長。 經(jīng)常有香客問我趟章,道長杏糙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任尤揣,我火速辦了婚禮搔啊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘北戏。我一直安慰自己负芋,他們只是感情好,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著旧蛾,像睡著了一般莽龟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锨天,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天毯盈,我揣著相機與錄音,去河邊找鬼病袄。 笑死搂赋,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的益缠。 我是一名探鬼主播脑奠,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼幅慌!你這毒婦竟也來了宋欺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤胰伍,失蹤者是張志新(化名)和其女友劉穎齿诞,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體骂租,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡祷杈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了渗饮。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吠式。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖抽米,靈堂內(nèi)的尸體忽然破棺而出特占,到底是詐尸還是另有隱情,我是刑警寧澤云茸,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布是目,位于F島的核電站,受9級特大地震影響标捺,放射性物質(zhì)發(fā)生泄漏懊纳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一亡容、第九天 我趴在偏房一處隱蔽的房頂上張望嗤疯。 院中可真熱鬧,春花似錦闺兢、人聲如沸茂缚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽脚囊。三九已至龟糕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間悔耘,已是汗流浹背讲岁。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留衬以,地道東北人缓艳。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像看峻,于是被迫代替她去往敵國和親郎任。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容