最近碰到一個 BUG ,會造成 json_encode 回傳空白,所以 api 的回傳值就會錯誤
找了好久才發現是在組資料的時候,不小心組出了一個遞迴物件(Object *RECURSION*)

所謂的遞迴物件就是,該物件有某個屬性是指向物件本身,就會造成在走訪的時候不斷的重覆指向
以前我從來沒有碰過這種資料,理論上正確的資料不會也不應該出現這種東西,總之就是要小心處理

以下看一下我手動建立出來的 遞迴物件(Object *RECURSION*)

<?php
    
$c = (object) array('a' => 1, 'b' => 2);
$c->d = $c;

echo "<pre>c = " . print_r($c, TRUE). "</pre>";
echo "json = " . json_encode($c);

/**
 * output
 *
 * c = stdClass Object
 * (
 *     [a] => 1
 *     [b] => 2
 *     [d] => stdClass Object
 *  *RECURSION*
 * )
 * 
 * 
 * Warning: json_encode(): recursion detected in D:\www\www_test\json_encode_error.php on line 7
 * json = {"a":1,"b":2,"d":{"a":1,"b":2,"d":null}}
 */
?>

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 wbkuo 的頭像
    wbkuo

    長島冰茶的工程師筆記

    wbkuo 發表在 痞客邦 留言(0) 人氣()