PHP入門之數組
前言
之前幾篇文章分別介紹了PHP的運算符,流程式控制制,函數。有興趣的可以去看看。
PHP入門之類型與運算符
PHP入門之流程式控制制
PHP入門之函數
接下來簡單介紹一下數組。
數組初探
為什麼要引進數組,因為如果有一個需求,有好幾十個數據需要統計,計算,如果不用數組,那麼就要定義好幾十個變數,這樣是不合理的。所以引進了數組的概念。
下面用一個案例入門:如果現在有6個數據,要求他們的和還有平均數。這裡使用數組。
程式碼如下:
<?php
$sums[0]=10;
$sums[1]=11;
$sums[2]=12.6;
$sums[3]=24;
$sums[4]=56;
$sums[5]=28;
$allsums=0; #count系統函數是用來統計數組個數的。
for ($i=0;$i<count($sums);$i++){ #這裡使用for循環遍曆數組,也可以while循環和do while 循環,都可以。
echo '<br/>'.$sums[$i]; # 但是使用這三個循環遍歷,鍵值不能改,默認的0、1、2等等,只能是數字
$allsums+=$sums[$i]; # 如果想自定義鍵值,那麼就要使用foreach()來遍曆數組。
}
echo '<br/>'.$allsums; #求總數
echo '<br/>'.$allsums/count($sums); #求平均數
?>
理清楚幾個概念,用$sums[0]=10來舉例
[0] 這個我們叫下標或者關鍵字。
$sums[0] 這個我們叫做數組的一個元素。
10 這個我們叫做$sums[0]對應的值。
$sums 這個叫做數組的名稱。
還有就是元素存放的值可以是任何數據類型。
舉個例子
<?php
$arr[0]=123;
$arr[1]=34.789;
$arr[2]="hello";
for($i=0;$i<count($arr);$i++){ #可以正常輸出 : 123 34.789 hello
echo '<br/>'.$arr[$i];
}
?>
第二種創建數組的方法。
舉個例子
<?php
$arr=array(123,34.789,"hello");
for ($i=0;$i<count($arr);$i++){
echo '<br/>'.$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 "<br/>$key=$val";
}
數組中鍵對應的值可以修改,例子如下:
$arr=array("logo"=>123,"haha"=>34.789,"qqq"=>"hello");
$arr['logo']="lxf";
foreach ($arr as $key=>$val){
echo "<br/>$key=$val";
}
echo '<br/>'.$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
<html>
<head>
<title>數組練習</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<h1>輸入6個數據,空格隔開</h1>
<form action="array2.php" method="post">
<input type="text" name="sum">
<input type="submit" value="提交">
</form>
</body>
</html>
array2.php
<?php
$sums=$_POST['sum'];
$arr=explode(" ",$sums);
$allarr=0;
foreach ($arr as $key=>$val){
$allarr+=$val;
#遍曆數組
echo '<br/>'."第"."$key"."=".$val;
}
#求總數
echo '<br/>'."總和=".$allarr;
#求平均值
echo '<br/>'."平均數=".round($allarr/count($arr),2);
?>
<br/><a href="array1.php">返回初頁面</a>
下面輸入13 34 67 89 89 27 結果如下圖:
小結
上面對數組進行了簡單的介紹,希望對大家有所幫助。