1. 程式人生 > >PHP入門之陣列

PHP入門之陣列

#前言 之前幾篇文章分別介紹了PHP的運算子,流程控制,函式。有興趣的可以去看看。 [PHP入門之型別與運算子](https://www.cnblogs.com/lxfweb/p/13379841.html) [PHP入門之流程控制](https://www.cnblogs.com/lxfweb/p/13380271.html) [PHP入門之函式](https://www.cnblogs.com/lxfweb/p/13394763.html) 接下來簡單介紹一下陣列。 #陣列初探 為什麼要引進陣列,因為如果有一個需求,有好幾十個數據需要統計,計算,如果不用陣列,那麼就要定義好幾十個變數,這樣是不合理的。所以引進了陣列的概念。 下面用一個案例入門:如果現在有6個數據,要求他們的和還有平均數。這裡使用陣列。 程式碼如下: ``` '.$sums[$i]; # 但是使用這三個迴圈遍歷,鍵值不能改,預設的0、1、2等等,只能是數字 $allsums+=$sums[$i]; # 如果想自定義鍵值,那麼就要使用foreach()來遍歷陣列。 } echo '
'.$allsums; #求總數 echo '
'.$allsums/count($sums); #求平均數 ?> ``` 理清楚幾個概念,用$sums[0]=10來舉例 [0] 這個我們叫下標或者關鍵字。 $sums[0] 這個我們叫做陣列的一個元素。 10 這個我們叫做$sums[0]對應的值。 $sums 這個叫做陣列的名稱。 **還有就是元素存放的值可以是任何資料型別。** 舉個例子 ```
'.$arr[$i]; } ?> ``` **第二種建立陣列的方法。** 舉個例子 ``` '.$arr[$i]; #可以正常輸出 : 123 34.789 hello } ?> ``` **第三種方法建立陣列的方法** 舉個例子: ``` $arr['logo']="123"; $arr['haha']=34.789; $arr['qqq']="hello"; ``` 或者 `$arr=array("logo"=>123,"haha"=>34.789,"qqq"=>"hello");` 這樣的話遍歷就用foreach()用來遍歷。 程式碼如下 ``` foreach ($arr as $key=>
$val){ echo "
$key=$val"; } ``` 陣列中鍵對應的值可以修改,例子如下: ``` $arr=array("logo"=>123,"haha"=>34.789,"qqq"=>"hello"); $arr['logo']="lxf"; foreach ($arr as $key=>$val){ echo "
$key=$val"; } echo '
'.$arr['logo']; ``` 我們可以用`print_r()`或者`var_dump()`來顯示這個陣列。 上面的例子顯示如下: Array ( [logo] => lxf [haha] => 34.789 [qqq] =>
hello ) array(3) { ["logo"]=> string(3) "lxf" ["haha"]=> float(34.789) ["qqq"]=> string(5) "hello" } 如果一個數組為$arr=array(11,33,44); 我們輸出 echo $arr[3];因為沒有這個鍵值,所以會報一個錯誤,在php中不算致命錯誤,其他比如Java是致命錯誤, 這個錯誤叫**陣列越界**。 php語言中,陣列可以動態增長,舉個例子。 ``` $arr=array(4,7,9); $arr[3]=466; echo $arr[3]; ``` 在這個例子中,會輸出466,不會報錯。 與PHP陣列相關的幾個重要函式 (1)count函式 統計陣列元素個數 (2)is_array函式 用來確定是不是陣列,舉個例子。 ``` $arr=array(12,34,24); echo is_array($arr); #這裡會返回1為真。如果 $arr=123; echo is_array($arr); #這裡會返回空,為假。 ``` (3)拆分字串explode("按照什麼拆分",字串),舉個例子 ``` $str="老大,老二,老三,老四"; $arr=explode(",",$str); print_r($arr); ``` 輸出結果為: ``` #由字串變為陣列了。 Array ( [0] => 老大 [1] => 老二 [2] => 老三 [3] => 老四 ) ``` 如果要刪除某個元素的鍵-值對需要使用unset()函式,需要注意的是,**刪除後不會重新建立索引**。舉個例子: ``` $arr=array(1,2,5,8); unset($arr[2]); print_r($arr); ``` 輸出結果為: unset也可以銷燬某個變數 Array ( [0] => 1 [1] => 2 [3] => 8 ) 可以同時刪除多個 ``` $arr=array(1,2,5,8); unset($arr[2],$arr[3]); print_r($arr); ``` 輸出結果為: Array ( [0] => 1 [1] => 2 ) 陣列運算子 $a + $b 聯合 $a 和 $b 的聯合。 $a == $b 相等 如果 $a 和 $b 具有相同的鍵/值對則為 TRUE。 $a === $b 全等 如果 $a 和 $b 具有相同的鍵/值對並且順序和型別都相同則為 TRUE。 $a != $b 不等 如果 $a 不等於 $b 則為 TRUE。 $a <> $b 不等 如果 $a 不等於 $b 則為 TRUE。 $a !== $b 不全等 如果 $a 不全等於 $b 則為 TRUE。 + 運算子把右邊的陣列元素附加到左邊的陣列後面,兩個陣列中都有的鍵名,則只用左邊陣列中的,右邊的被忽略。 #例項 要求:將輸入的資料全部輸出,並求平均值。 ``` array1.php 陣列練習

輸入6個數據,空格隔開

``` array2.php ``` $val){ $allarr+=$val; #遍歷陣列 echo '
'."第"."$key"."=".$val; } #求總數 echo '
'."總和=".$allarr; #求平均值 echo '
'."平均數=".round($allarr/count($arr),2); ?>
返回初頁面 ``` 下面輸入13 34 67 89 89 27 結果如下圖: ![](https://img2020.cnblogs.com/blog/1996712/202008/1996712-20200806003423726-1837490731.png) #小結 上面對陣列進行了簡單的介紹,希望對大家有所幫助。