溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

php對(duì)象轉(zhuǎn)數(shù)組的黑技術(shù)

發(fā)布時(shí)間:2020-08-01 08:13:54 來(lái)源:網(wǎng)絡(luò) 閱讀:1277 作者:hgditren 欄目:web開(kāi)發(fā)

    通常在php中,想把對(duì)象處理成數(shù)組是需要花費(fèi)點(diǎn)精力的。
    但是今天在這里,我告訴你一個(gè)so easy的黑技術(shù)來(lái)解決這個(gè)問(wèn)題。


<?php
/**
 * Created by PhpStorm.
 * User: zrj
 * Date: 17-10-20
 * Time: 下午8:08
 */
declare(strict_types=1);//開(kāi)啟強(qiáng)類(lèi)型模式

class Person
{
    public $name;
    public $age;

    public function __construct(string $name,int $age)
    {
        $this->name = $name;
        $this->age = $age;
    }
}

$jack = new Person('Jack', 18);
echo print_r($jack, true);
echo "<p>";

//對(duì)象轉(zhuǎn)數(shù)組
$jack = json_decode(json_encode($jack), true);
echo print_r($jack, true);


來(lái)看看結(jié)果:

Person Object
(
    [name] => Jack
    [age] => 18
)

Array
(
    [name] => Jack
    [age] => 18
)


思路分析:

  1. 先將對(duì)象進(jìn)行json_encode處理為json字符串。

  2. 將轉(zhuǎn)換后json字符串進(jìn)行json_decode處理。

    json_decode(json_encode($obj),true);



總結(jié):

    優(yōu)點(diǎn):簡(jiǎn)單快捷。

    缺點(diǎn):會(huì)消耗double倍的內(nèi)存。


正確的Get姿勢(shì):  

對(duì)象本身占內(nèi)存小時(shí),可以直接使用。

對(duì)象本身占內(nèi)存大的時(shí)候(如幾千條記錄組成數(shù)據(jù)集對(duì)象),占用兩倍的內(nèi)存可能會(huì)造成超出php的內(nèi)存限制,出現(xiàn)異常。


故遇到大體量對(duì)象時(shí),不建議使用。


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI