一、如何定義陣列:在PHP中建立陣列主要有兩種方式,以下就讓我們來看看如何建立一個陣列
#(1)直接為每個元素賦值的方法建立陣列。
格式為:$arrayname[key]=value;
其中arrayname為陣列的名字,key為陣列的元素的鍵, value為元素的值。鍵可以是0,1,2,3這一類數字,也可以是字串。如下圖所示:
程式碼如下:
<?php //用1,2,3的数值作为数组的键 echo '<p>数组$array1的键值为:</p>'; $array1[1]='a'; $array1[2]='b'; $array1[3]='c'; print_r($array1); //如果省略键的方式,则数组默认的键为从0开始递增的数值 echo '<p>数组$array2的键值为:</p>'; $array2[]='a'; $array2[]='b'; $array2[]='c'; print_r($array2); //以字符串作为数组的键 echo '<p>数组$array3的键值为:</p>'; $array3['one']='a'; $array3['two']='b'; $array3['three']='c'; print_r($array3); ?>
以上程式碼輸出地結果為:
陣列$ array1的鍵值為:
Array ( [1] => a [2] => b [3] => c )
#陣列$ array2的鍵值為:
Array ( [0] => a [1] => b [2] => c )
#陣列$ array3的鍵值為:
Array ( [one] => a [two] => b [three] => c )
#(2)用array函數直接定義一個陣列。
格式為:$arrayname=array(key1=>value1,key2=>value2);
#其中arrayname為陣列名稱,key1、key2為數組的鍵,value1、value2分別對應key1和key2的值。
舉出一個例子,如下列程式碼:
#程式碼如下:
<?php //以数值作为键 $array6=array(1=>'a',2=>'b',3=>'c'); echo '<p>数组$array6的键和值为:</p>'; print_r($array6); //以字符串作为键 $array7=array('one'=>'a','two'=>'b','three'=>'c'); echo '<p>数组$array7的键和值为:</p>'; print_r($array7); //省略键的写法 $array8=array('a','b','c'); echo '<p>数组$array8的键和值为:</p>'; print_r($array8); ?>
其结果为:
数组$array6的键和值为:
Array ( [1] => a [2] => b [3] => c )
数组$array7的键和值为:
Array ( [one] => a [two] => b [three] => c )
数组$array8的键和值为:
Array ( [0] => a [1] => b [2] => c )
注意:
1>如果用为数组中的一元素指定一个数值作为其键,则此元素之后的所有元素,其默认键为所指定数值的自增的非重复值。
单纯看字面意思有点难理解,让我们来看看一个例子:
以下代码:
代码如下:
<?php //数组$array4第一个元素的键显示指定为2,之后的第2、3个元素以省略键的方式 $array4[2]='a'; $array4[]='b'; $array4[]='c'; //第4个元素的键显示指定为10,之后的第5、6个元素以省略键的方式 $array4[10]='d'; $array4[]='e'; $array4[]='f'; //第7个元素的键显示指定为9,之后的第8、9个元素以省略键的方式 $array4[9]='g'; $array4[]='h'; $array4[]='i'; //打印数组的键与值 print_r($array4); ?>
其结果为:
Array ( [2] => a [3] => b [4] => c [10] => d [11] => e [12] => f [9] => g [13] => h [14] => i )
说明:第七个元素的键为9,正常情况下第八个元素间应该为10,但是键10,11和12之前已有元素使用过,则第八个元素的键为13。
2>无论是以数字还是以字符串作为数组元素的键,其所代表的都只是此元素的键,与此元素在数组中的位置无直接关系,这是与C#等语言中的数组最大的不同之处。下面举个例子。
以下代码:
代码如下:
<?php $array5['one']='a'; if(!isset($array5[0])) 4 { 5 echo '<p>$array5[0]是空的!</p>'; } ?>
其结果为:
$array5[0]是空的!
说明:$array5[0]所代表的是数组中键为数值0的元素的值(并不像C#等语言代表数组的第一个元素),由于数组只有键为字符串‘one'这一元素,没有元素的键为0,所以$array5[0]是空的。
3>PHP支持两种数组:索引数组(indexed array)和联合数组(associative array),前者使用数字作为键,后者使用字符串作为键。在创建数组时可以混合使用数字和字符串作为元素的键。如下所示代码:
代码如下:
<?php $array9=array(1=>'a', 2=>'b', 'one'=>'c', 'two'=>'d', 'e', 'f', 'g'); echo '<p>数组$array9的键和值为:</p>'; print_r($array9); ?>
其结果为:
数组$array9的键和值为:
Array ( [1] => a [2] => b [one] => c [two] => d [3] => e [4] => f [5] => g )
4>变量也可以作为数组的键,如下所示:
代码如下:
<?php $key1='one'; $key2='two'; $key3='three'; $array10[$key1]='a'; $array10[$key2]='b'; $array10[$key3]='c'; echo '<p>数组$array10的键和值为:</p>'; print_r($array10); ?>
其结果为:
数组$array10的键和值为:
Array ( [one] => a [two] => b [three] => c )
二、如何访问数组的元素
1、 一般方法
要获取数组中的某个元素,只需要使用数组名加中括号加某个键即可,调用方法如下所示:
$arrayname[key];
2、 使用foreach结果遍历数组
如果要访问每个数组元素,可以使用foreach循环:
Foreach($array as $value) { //Do something with $value }
Foreach循环将会迭代数组$array中每个元素,并把每个元素的值赋予$value变量,下面举个例子:
代码如下:
<?php $array11=array('a','b','c','d','e'); echo '<p>数组$array11的值为:'; foreach($array11 as $value) 5 { 6 echo $value.','; } echo '</p>'; ?>
其输出结果为:
数组$array11的值为:a,b,c,d,e,
使用foreach还可以同时访问数组元素的键和值,可以使用:
Foreach($array as $key => $value) { //Do something with $key and $value }
其中$key为每个元素的键,$value元素的值,下面的代码演示如何使用foreach结构创建一个下拉框:
代码如下:
<?php $array12=array('one'=>1,'two'=>2,'three'=>3,'four'=>4,'five'=>5); echo '<select name="onetofive">'; foreach($array12 as $key => $value) 5 { 6 echo "<option value=\"$value\">$key</option>"; } echo '</select>'; ?>
3、 使用list函数访问数组
List函数是把数组中的值赋给一些变量,其函数语法如下:
Void list(mixed varname, mixed varname2……)
看如下示例:
代码如下:
<?php $array13=array('red','blue','green'); //赋值给所有的变量 list($flag1,$sky1,$grassland1)=$array13; echo "$flag1 $sky1 $grassland1"; echo '<br>'; //赋值给部分变量 list($flag2,,$grassland2)=$array13; echo "$flag2 $grassland2"; echo '<br>'; //只赋值给第三个变量 list(,,$grassland3)=$array13; echo "$grassland3"; echo '<br>'; ?>
输出结果为:
red blue green
red green
green
注意: list() 仅能用于数字索引的数组并且数字索引必须从 0 开始。
因为list函数是先把数组中键为0的元素值赋值给第一个变量,再把键为1的元素值赋值给第二个变量,以此类推,所以list函数中的变量个数和位置必须和数组中的数字键相对应,才能获得想要的值,而且list函数是访问不到以字符串作为键的数组元素的。如下所示:
代码如下:
<?php $array13=array(1=>'red','blue','green'); list($flag1,$sky1,$grassland1)=$array13; echo '$flag1的值为:'.$flag1.'<br>'; echo '$sky1的值为:'.$sky1.'<br>'; echo '$grassland1的值为:'.$grassland1.'<br>'; ?>
其输出结果为:
$flag1的值为:
$sky1的值为:red
$grassland1的值为:blue
说明:因为$flag1的值本应为数组中键为0的元素值,但此数组首元素是以1为键,没有键为0的元素,所以$flag1的值为空,因此也导致后面$sky1和$grassland1的值发生了变化。
4、 使用each函数访问数组
each 函数是返回数组中当前的键/值对并将数组指针向前移动一步,注意是一对,下面详细说明。该函数语法:
array each ( array &$array )
返回 array 数组中当前指针位置的键/值对并向前移动数组指针。每一个键值对被返回为四个单元的数组,键值为 0,1,key 和 value四个元素。元素 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。如果内部指针越过了数组的末端,则 each() 返回 FALSE。这里面为什么each函数有四个下表呢?其实each函数得到这四个下标只是方便我们操作而已,我们可以用0,1作为索引,也可以用key,value作为索引。请看下列代码:
代码如下:
<?php $arr=array("我是第一个值","我是第二个值","我是第三个值"); echo "当我们用0,1为索引时:<br/><br/>"; $a=each($arr); echo "我在\$arr数组中的键为:".$a['0']; echo "<br/>"; echo "我在\$arr数组中的值为:".$a['1']; echo "<br/><br/>"; echo "当我们用key,value为索引时:<br/><br/>"; $b=each($arr); echo "我在\$arr数组中的键为:".$b['key']; echo "<br/>"; echo "我在\$arr数组中的值为:".$b['value']; ?>
显示为:
当我们用0,1为索引时:
我在$arr数组中的键为:0
我在$arr数组中的值为:我是第一个值
当我们用key,value为索引时:
我在$arr数组中的键为:1
我在$arr数组中的值为:我是第二个值
5、 用each函数与list函数结合来遍历数组,如下例:
代码如下:
<?php $array14=array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry'); while(list($key,$value) = each($array14)) 4 { 5 echo "$key => $value\n"; } ?>
其输出结果为:
a => apple b => banana c => cranberry
6、使用for循环访问数组
如下例所示:
代码如下:
<?php $array15=array('a','b','c','d','e','f'); for($i=0;$i<count($array15);$i++) 4 { 5 echo '数组元素:'.$array15[$i].'<br>'; } ?>
输出结果为:
数组元素:a
数组元素:b
数组元素:c
数组元素:d
数组元素:e
数组元素:f
以上是PHP之數組基礎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

在PHP中,trait適用於需要方法復用但不適合使用繼承的情況。 1)trait允許在類中復用方法,避免多重繼承複雜性。 2)使用trait時需注意方法衝突,可通過insteadof和as關鍵字解決。 3)應避免過度使用trait,保持其單一職責,以優化性能和提高代碼可維護性。

依賴注入容器(DIC)是一種管理和提供對象依賴關係的工具,用於PHP項目中。 DIC的主要好處包括:1.解耦,使組件獨立,代碼易維護和測試;2.靈活性,易替換或修改依賴關係;3.可測試性,方便注入mock對象進行單元測試。

SplFixedArray在PHP中是一種固定大小的數組,適用於需要高性能和低內存使用量的場景。 1)它在創建時需指定大小,避免動態調整帶來的開銷。 2)基於C語言數組,直接操作內存,訪問速度快。 3)適合大規模數據處理和內存敏感環境,但需謹慎使用,因其大小固定。

PHP通過$\_FILES變量處理文件上傳,確保安全性的方法包括:1.檢查上傳錯誤,2.驗證文件類型和大小,3.防止文件覆蓋,4.移動文件到永久存儲位置。

JavaScript中處理空值可以使用NullCoalescingOperator(??)和NullCoalescingAssignmentOperator(??=)。 1.??返回第一個非null或非undefined的操作數。 2.??=將變量賦值為右操作數的值,但前提是該變量為null或undefined。這些操作符簡化了代碼邏輯,提高了可讀性和性能。

CSP重要因為它能防範XSS攻擊和限制資源加載,提升網站安全性。 1.CSP是HTTP響應頭的一部分,通過嚴格策略限制惡意行為。 2.基本用法是只允許從同源加載資源。 3.高級用法可設置更細粒度的策略,如允許特定域名加載腳本和样式。 4.使用Content-Security-Policy-Report-Only頭部可調試和優化CSP策略。

HTTP請求方法包括GET、POST、PUT和DELETE,分別用於獲取、提交、更新和刪除資源。 1.GET方法用於獲取資源,適用於讀取操作。 2.POST方法用於提交數據,常用於創建新資源。 3.PUT方法用於更新資源,適用於完整更新。 4.DELETE方法用於刪除資源,適用於刪除操作。

HTTPS是一種在HTTP基礎上增加安全層的協議,主要通過加密數據保護用戶隱私和數據安全。其工作原理包括TLS握手、證書驗證和加密通信。實現HTTPS時需注意證書管理、性能影響和混合內容問題。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

禪工作室 13.0.1
強大的PHP整合開發環境

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3漢化版
中文版,非常好用