簡體   English   中英

數組表示法中的 PHP 花括號

[英]PHP curly braces in array notation

我剛剛遇到了一段非常奇怪的 php 代碼:

$oink{'pig'} = 1;
var_dump($oink);

$oink{'pig'} = '123123';
echo $oink{'pig'}; /* => 123123 */
echo $oink['pig']; /* => 123123 */

它像一個數組一樣工作,但手冊中沒有提到。 這是什么?

本手冊中提到的。 {}只是[] § 使用方括號語法訪問數組元素的替代語法 此方法自 PHP 7.4.0 起已棄用,自 PHP 8.0.0 起不再受支持

筆記:

在 PHP 8.0.0 之前,方括號和花括號可以互換使用來訪問數組元素(例如 $array[42] 和 $array{42} 在上面的例子中都可以做同樣的事情)。 自 PHP 7.4.0 起,大括號語法已被棄用,自 PHP 8.0.0 起不再受支持。

字符串§ 字符串訪問和按字符修改也是如此

可以通過使用方數組括號在字符串后指定所需字符的從零開始的偏移量來訪問和修改字符串中的字符,如$str[42] 為此,可以將字符串視為字符數組。 [...]

注意:在 PHP 8.0.0 之前,出於同樣的目的,也可以使用大括號訪問字符串,如 $str{42}。 自 PHP 7.4.0 起,此大括號語法已棄用,自 PHP 8.0.0 起不再受支持。

手冊中提到了它,但它很模糊:

http://www.php.net/manual/en/language.types.string.php#language.types.string.substr

簡而言之,花括號只能訪問一個字符(嘗試添加一個完整的字符串,您會看到它只返回第一個字符)。 它也已被棄用,所以我會避免使用它。

根據對文檔的評論,它只是另一種表示法,可能旨在類似於 Perl 語法: http : //www.php.net/manual/de/language.types.array.php#99015

更新:最初發布此答案時,PHP 手冊中沒有關於此表示法的任何官方信息。 然而,到 2014 年,上面引用的評論已被刪除,正如Pacerier 的回答所說,該符號已在手冊中正式提及。

自 PHP 7.4 起,不推薦使用大括號來訪問數組。

https://wiki.php.net/rfc/deprecate_curly_braces_array_access

PHP7.4正式棄用使用花括號訪問數組和字符串偏移量 Ref: https://www.php.net/manual/en/migration74.deprecated.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM