php object 转 array【转】

要在 Command line 讀取 JSON, 一時找不到可以直接讀取的 Library, 所以就先用 PHP 寫一個來頂.

物件轉換成陣列使用的函式

PHP 使用 json_decode 預設是會回傳物件, 但是物件拿來作 foreach 的處理有點麻煩, 所以需要 Object to Array 的轉換程式.

CLI 的 JSON Reader PHP 版程式

讀取 CLI 參數, 可用 fgets(STDIN);fgets(fopen('php://stdin', 'r')); 來抓取.

<?php
// json_file content:
//   {"version":1.0,"url":"http://tw.yahoo.com"}
// Usage:
//   cat json_file | php read_json.php

$stdin = get_object_vars(json_decode(fgets(STDIN)));
foreach ($stdin as $k => $v) {
    echo "$k = /"$v/"/n"; // print json_decode key => value.
}
?>

但是這個是 JSON 只有一層物件的狀況, 那多層物件的狀況, get_object_vars() 就不太夠用.

於此篇文章 [RESOLVED] foreach stdclass query 有寫好的 Function 可解決此狀況:

<?php
function std_class_object_to_array($stdclassobject)
{
    $_array = is_object($stdclassobject) ? get_object_vars($stdclassobject) : $stdclassobject;

    foreach ($_array as $key => $value) {
        $value = (is_array($value) || is_object($value)) ? std_class_object_to_array($value) : $value;
        $array[$key] = $value;
    }

    return $array;
}
// print_r(std_class_object_to_array(json_decode($json_str)));
?>

上述 PHP JSON Reader 的程式, 就只需要將 get_object_vars() 換成 std_class_object_to_array() 即可.

另外, 上述的程式看看就好, 不需要去用. XD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值