php怎麼強制物件轉數組

藏色散人
發布: 2023-03-08 17:48:02
原創
1842 人瀏覽過

php將物件強制轉數組的方法:1、透過定義的「object_array」方法轉換;2、透過「json_decode」方法轉換;3、透過定義的「object2array_pre」方法轉換。

php怎麼強制物件轉數組

本文操作環境:windows7系統、PHP7.1版,DELL G3電腦

php的物件轉數組

1.

//PHP stdClass Object转array  
function object_array($array) {  
    if(is_object($array)) {  
        $array = (array)$array;  
    } 
    if(is_array($array)) {
        foreach($array as $key=>$value) {  
            $array[$key] = object_array($value);  
        }  
    }  
    return $array;  
}
登入後複製

2.

$array = json_decode(json_encode(simplexml_load_string($xmlString)),TRUE);
登入後複製

3.

function object2array_pre(&$object) {
    if (is_object($object)) {
        $arr = (array)($object);
    } else {
        $arr = &$object;
    }
    if (is_array($arr)) {
        foreach($arr as $varName => $varValue){
            $arr[$varName] = $this->object2array($varValue);
        }
    }
    return $arr;
}
登入後複製

4.如果是10W的資料量的話,執行要進1s,結構再複雜些,可以達到3s,效能太差了,可以用以下替換:

function object2array(&$object) {
    $object =  json_decode( json_encode( $object),true);
    return  $object;
}
登入後複製

 

json_decode(json_encode($array),true)
登入後複製

  多層數組和物件轉換的用途很簡單,便於處理WebService中多層數群組和物件的轉換【推薦學習:《PHP影片教學》】

  簡單的(array)和(object)只能處理單層的數據,對於多層的陣列和物件轉換則無能為力。

  透過json_decode(json_encode($object)可以將物件一次轉換為數組,但是object中遇到非utf-8編碼的非ascii字元則會出現問題,例如gbk的中文,何況json_encode和decode的效能也值得疑慮。

  下面上碼:

<?php
 
    function objectToArray($d) {
        if (is_object($d)) {
            // Gets the properties of the given object
            // with get_object_vars function
            $d = get_object_vars($d);
        }
 
        if (is_array($d)) {
            /*
            * Return array converted to object
            * Using __FUNCTION__ (Magic constant)
            * for recursive call
            */
            return array_map(__FUNCTION__, $d);
        }
        else {
            // Return array
            return $d;
        }
    }
 
    function arrayToObject($d) {
        if (is_array($d)) {
            /*
            * Return array converted to object
            * Using __FUNCTION__ (Magic constant)
            * for recursive call
            */
            return (object) array_map(__FUNCTION__, $d);
        }
        else {
            // Return object
            return $d;
        }
    }
 
    // Useage:
    // Create new stdClass Object     
        $init = new stdClass;
    // Add some test data
    $init->foo = "Test data";
    $init->bar = new stdClass;
    $init->bar->baaz = "Testing";
    $init->bar->fooz = new stdClass;
    $init->bar->fooz->baz = "Testing again";
    $init->foox = "Just test";
 
    // Convert array to object and then object back to array
    $array = objectToArray($init);
    $object = arrayToObject($array);
 
    // Print objects and array
    print_r($init);
    echo "\n";
    print_r($array);
    echo "\n";
    print_r($object);
?>
登入後複製

以上是php怎麼強制物件轉數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板