PHP中的Array
PHP中的数组是一个有序映射(1对1的关系 key-value)。 Array是一个综合体:可表示数组、字典、集合等。 key可以是int或string。value可以是任意类型。 key如下情况会强制转换: 1.包含合法整型值的字符串=整型。 "8"=8 实际存储8 2.浮点数=整型。 8.7=8 小数
PHP中的数组是一个有序映射(1对1的关系 key->value)。
Array是一个综合体:可表示数组、字典、集合等。
key可以是int或string。value可以是任意类型。
key如下情况会强制转换:
1.包含合法整型值的字符串=>整型。 "8"=>8 实际存储8
2.浮点数=>整型。 8.7=>8 小数点会被舍去
3.布尔类型=>类型。 true=>1,false=>0 实际存储为0或1
4.Null=>“” 实际存储""
5.数组和对象不能被用为键名。
键名不可重复,若重复,则只有最后一个有效。
<span>php </span><span>$array</span> = <span>array</span><span>( </span>1 => "a", "1" => "b", 1.5 => "c", <span>true</span> => "d",<span> ); </span><span>var_dump</span>(<span>$array</span><span>); </span>?>
以上例程会输出:
<span>array</span>(1<span>) { [</span>1]=> <span>string</span>(1) "d"<span> }</span>
上例中所有的键名都被强制转换为 1,则每一个新单元都会覆盖前一个的值,最后剩下的只有一个 "d"。
PHP数组可以同时含有int和string类型的键名,因为PHP 实际并不区分索引数组和关联数组。
如果对给出的值没有指定键名,则取当前最大的整数索引值,而新的键名将是该值加一。如果指定的键名已经有了值,则该值会被覆盖。
Example #5 仅对部分单元指定键名
<span>php </span><span>$array</span> = <span>array</span><span>( </span>"a", "b", 6 => "c", "d",<span> ); </span><span>var_dump</span>(<span>$array</span><span>); </span>?>
以上例程会输出:
<span>array</span>(4<span>) { [</span>0]=> //默认从0开始 <span>string</span>(1) "a"<span> [</span>1]=> <span>string</span>(1) "b"<span> [</span>6]=> <span>string</span>(1) "c"<span> [</span>7]=> //没指定键,则从上个索引值+1 <span>string</span>(1) "d"<span> }</span>
数组单元可以通过 array[key] 语法来访问。
Example #6 访问数组单元
<span>php </span><span>$array</span> = <span>array</span><span>( </span>"foo" => "bar", 42 => 24, "multi" => <span>array</span><span>( </span>"dimensional" => <span>array</span><span>( </span>"array" => "foo"<span> ) ) ); </span><span>var_dump</span>(<span>$array</span>["foo"<span>]); </span><span>var_dump</span>(<span>$array</span>[42<span>]); </span><span>var_dump</span>(<span>$array</span>["multi"]["dimensional"]["array"<span>]); </span>?>
以上例程会输出:
<span>string</span>(3) "bar"<span> int(</span>24<span>) </span><span>string</span>(3) "foo"
Note:
方括号和花括号可以互换使用来访问数组单元(例如 $array[42] 和 $array{42} 在上例中效果相同)。
要修改某个值,通过其键名给该单元赋一个新值。要删除某键值对,对其调用 unset() 函数。
<span>php </span><span>$arr</span> = <span>array</span>(5 => 1, 12 => 2<span>); </span><span>$arr</span>[] = 56; <span>//</span><span> This is the same as $arr[13] = 56; // at this point of the script</span> <span>$arr</span>["x"] = 42; <span>//</span><span> This adds a new element to // the array with key "x"</span> <span>unset</span>(<span>$arr</span>[5]); <span>//</span><span> This removes the element from the array</span> <span>unset</span>(<span>$arr</span>); <span>//</span><span> This deletes the whole array</span> ?>
Note:<span> 如上所述,如果给出方括号但没有指定键名,则取当前最大整数索引值,新的键名将是该值加上 </span>1(但是最小为 0)。如果当前还没有整数索引,则键名将为 0<span>。 注意这里所使用的最大整数键名不一定当前就在数组中。它只要在上次数组重新生成索引后曾经存在过就行了。以下面的例子来说明:</span>
<span>php </span><span>//</span><span> 创建一个简单的数组</span> <span>$array</span> = <span>array</span>(1, 2, 3, 4, 5<span>); </span><span>print_r</span>(<span>$array</span><span>); </span><span>//</span><span> 现在删除其中的所有元素,但保持数组本身不变:</span> <span>foreach</span> (<span>$array</span> <span>as</span> <span>$i</span> => <span>$value</span><span>) { </span><span>unset</span>(<span>$array</span>[<span>$i</span><span>]); } </span><span>print_r</span>(<span>$array</span><span>); </span><span>//</span><span> 添加一个单元(注意新的键名是 5,而不是你可能以为的 0)</span> <span>$array</span>[] = 6<span>; </span><span>print_r</span>(<span>$array</span><span>); </span><span>//</span><span> 重新索引:</span> <span>$array</span> = <span>array_values</span>(<span>$array</span><span>); </span><span>$array</span>[] = 7<span>; </span><span>print_r</span>(<span>$array</span><span>); </span>?>
以上例程会输出:
<span>Array</span><span> ( [</span>0] => 1<span> [</span>1] => 2<span> [</span>2] => 3<span> [</span>3] => 4<span> [</span>4] => 5<span> ) </span><span>Array</span><span> ( ) </span><span>Array</span><span> ( [</span>5] => 6<span> ) </span><span>Array</span><span> ( [</span>0] => 6<span> [</span>1] => 7<span> )</span>
转换为数组
对于任意 integer,float,string,boolean 和 resource 类型,如果将一个值转换为数组,将得到一个仅有一个元素的数组,其下标为 0,该元素即为此标量的值。换句话说,(array)$scalarValue 与 array($scalarValue) 完全一样。
如果一个 object 类型转换为 array,则结果为一个数组,其单元为该对象的属性。键名将为成员变量名,不过有几点例外:整数属性不可访问;私有变量前会加上类名作前缀;保护变量前会加上一个 '*' 做前缀。这些前缀的前后都各有一个 NULL 字符。这会导致一些不可预知的行为:
<span>php </span><span>class</span><span> A { </span><span>private</span> <span>$A</span>; <span>//</span><span> This will become '\0A\0A'</span> <span>} </span><span>class</span> B <span>extends</span><span> A { </span><span>private</span> <span>$A</span>; <span>//</span><span> This will become '\0B\0A'</span> <span>public</span> <span>$AA</span>; <span>//</span><span> This will become 'AA'</span> <span>} </span><span>var_dump</span>((<span>array</span>) <span>new</span><span> B()); </span>?>
上例会有两个键名为 'AA',不过其中一个实际上是 '\0A\0A'。
将 NULL 转换为 array 会得到一个空的数组。
多用途的数组类型Array,以下为示例:
Example #8 使用 array()
<span>php </span><span>//</span><span> Array as (property-)map</span> <span>$map</span> = <span>array</span>( 'version' => 4, 'OS' => 'Linux', 'lang' => 'english', 'short_tags' => <span>true</span><span> ); </span><span>//</span><span> strictly numerical keys</span> <span>$array</span> = <span>array</span>( 7, 8, 0, 156, -10<span> ); </span><span>//</span><span> this is the same as array(0 => 7, 1 => 8, ...)</span> <span>$switching</span> = <span>array</span>( 10, <span>//</span><span> key = 0</span> 5 => 6, 3 => 7, 'a' => 4, 11, <span>//</span><span> key = 6 (maximum of integer-indices was 5)</span> '8' => 2, <span>//</span><span> key = 8 (integer!)</span> '02' => 77, <span>//</span><span> key = '02'</span> 0 => 12 <span>//</span><span> the value 10 will be overwritten by 12</span> <span> ); </span><span>//</span><span> empty array</span> <span>$empty</span> = <span>array</span><span>(); </span>?>
Example #9 集合
<span>php </span><span>$colors</span> = <span>array</span>('red', 'blue', 'green', 'yellow'<span>); </span><span>foreach</span> (<span>$colors</span> <span>as</span> <span>$color</span><span>) { </span><span>echo</span> "Do you like <span>$color</span>?\n"<span>; } </span>?>
以上例程会输出:
<span>Do you like red? Do you like blue? Do you like green? Do you like yellow?</span>
Example #10 在循环中改变单元
<span>php </span><span>//</span><span> PHP 5</span> <span>foreach</span> (<span>$colors</span> <span>as</span> &<span>$color</span><span>) { </span><span>$color</span> = <span>strtoupper</span>(<span>$color</span><span>); } </span><span>unset</span>(<span>$color</span>); <span>/*</span><span> ensure that following writes to $color will not modify the last array element </span><span>*/</span> <span>//</span><span> Workaround for older versions</span> <span>foreach</span> (<span>$colors</span> <span>as</span> <span>$key</span> => <span>$color</span><span>) { </span><span>$colors</span>[<span>$key</span>] = <span>strtoupper</span>(<span>$color</span><span>); } </span><span>print_r</span>(<span>$colors</span><span>); </span>?>
以上例程会输出:
<span>Array ( [0] => RED [1] => BLUE [2] => GREEN [3] => YELLOW )</span>
Example #14 递归和多维数组
<span>php </span><span>$fruits</span> = <span>array</span> ( "fruits" => <span>array</span> ( "a" => "orange", "b" => "banana", "c" => "apple"<span> )</span>, "numbers" => <span>array</span> ( 1, 2, 3, 4, 5, 6<span> )</span>, "holes" => <span>array</span> ( "first", 5 => "second", "third"<span> ) ); </span><span>//</span><span> Some examples to address values in the array above </span> <span>echo</span> <span>$fruits</span>["holes"][5]; <span>//</span><span> prints "second"</span> <span>echo</span> <span>$fruits</span>["fruits"]["a"]; <span>//</span><span> prints "orange"</span> <span>unset</span>(<span>$fruits</span>["holes"][0]); <span>//</span><span> remove "first" // Create a new multi-dimensional array</span> <span>$juices</span>["apple"]["green"] = "good"<span>; </span>?><span> 数组(</span><span>Array</span><span>) 的赋值总是会涉及到值的拷贝。使用引用运算符通过引用来拷贝数组。 </span><span>php </span><span>$arr1</span> = <span>array</span>(2, 3<span>); </span><span>$arr2</span> = <span>$arr1</span><span>; </span><span>$arr2</span>[] = 4; <span>//</span><span> $arr2 is changed, // $arr1 is still array(2, 3)</span> <span>$arr3</span> = &<span>$arr1</span><span>; </span><span>$arr3</span>[] = 4; <span>//</span><span> now $arr1 and $arr3 are the same</span> ?>

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

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

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

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

在PHP8 中,match表達式是一種新的控制結構,用於根據表達式的值返回不同的結果。 1)它類似於switch語句,但返回值而非執行語句塊。 2)match表達式使用嚴格比較(===),提升了安全性。 3)它避免了switch語句中可能的break遺漏問題,增強了代碼的簡潔性和可讀性。

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。
