php7 对象转数组,php7中为对象/关联数组进行解构赋值
在CoffeeScript,Clojure,ES6和許多其他語言中,我們對對象/貼圖/等進行了解構,如下所示:
obj = {keyA: 'Hello from A', keyB: 'Hello from B'}
{keyA, keyB} = obj
我在php中找到了這個list函數,可以讓你像這樣構造數組:
$info = array('coffee', 'brown', 'caffeine');
list($drink, $color, $power) = $info;
對于PHP 7.0及更低版本,超出了功能list。文檔說明:
list僅適用于數值數組,并假設數字索引從0開始。
可能適合您的目的是將extract()變量從數組導入當前符號表的函數。
雖然list您可以明確定義變量名稱,extract()但不會給您這種自由。
提取關聯數組
有了extract你可以做這樣的事情:
$info = [ 'drink' => 'coffee', 'color' => 'brown', 'power' => 'caffeine' ];
extract($info);
var_dump($drink); // string(6) "coffee"
var_dump($color); // string(5) "brown"
var_dump($power); // string(8) "caffeine"
提取對象
提取對象的工作方式幾乎相同。由于extract只將數組作為參數,我們需要將對象屬性作為數組。get_object_vars為你這樣做。它返回一個關聯數組,其中所有公共屬性都是鍵,其值是值。
class User {
public $name = 'Thomas';
}
$user = new User();
extract( get_object_vars($user) );
var_dump($name); // string(6) "Thomas"
陷阱
extract()是不同的,list因為它不允許您顯式定義導出到符號表的變量名稱。
變量名稱默認對應于數組鍵。
list是一種語言結構,extract()而是一種功能
可能會覆蓋您事先無意中定義的變量
您的數組鍵可能無效,因為變量名稱
使用$flags您可以作為第二個參數傳遞的參數,可以extract()在碰撞或無效變量的情況下影響行為。但是知道如何extract()工作并將其與cauton一起使用仍然很重要。
從PHP 7.1開始,這是可能的:
您現在可以在list()或其新的速記[]語法中指定鍵。這使得能夠使用非整數或非順序密鑰對數組進行解構。
現在可以使用簡寫數組語法([])來解析分配的數組(包括在foreach中),作為現有list()語法的替代,仍然支持該語法。
它真的不漂亮,幸好這已經在7.1中通過wiki.php.net/rfc/short_list_syntax
如下所示 :
['a' => $a, 'c' => $c] = $args;
laravel 底層獲取controller和action 就使用到上面的解構賦值。
本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的php7 对象转数组,php7中为对象/关联数组进行解构赋值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java sqlserver 死锁_sq
- 下一篇: centos7安装php8,centos