0

API の json データを json デコードし、オブジェクトを array に変換したいと考えました。そのためのクラス関数を書きました。そしてその機能は

public function objectToArray($result) {
    if (is_object($result)) {
        $result = get_object_vars($result);
    }
    if (is_array($result)) {
        return array_map( @$this->objectToArray, $result);
    }
    else {
        // Return array
        return $result;    
    }
} 

したがって、上記のコードは機能しませんでした。「最初のレイヤー」オブジェクトのみを変換しましたが、そのオブジェクト配列のオブジェクトは変換しませんでした(ネストされた配列とオブジェクトについて話している)。しかし、関数objectToArrayのようなクラスの外でそれを宣言し、array_mapの引数を「objectToArry」に変更すると、突然機能し始めました。どうして ?PHP のクラス内の再帰関数に問題はありますか?

4

3 に答える 3

2

どうしたの:

json_decode($input,true);
于 2012-08-04T11:43:33.260 に答える
0

PHP では、$this->objectToArray期待どおりの関数ではなく、その名前のプロパティへの参照です。オブジェクト インスタンスとメソッド名を含む配列を渡す必要があります。

return array_map(array($this, 'objectToArray'), $result);
于 2012-08-04T11:44:38.420 に答える
0

オブジェクトのメソッドをコールバックとして使用する場合は、配列を渡す必要があります。

array_map(array($this, 'objectToArray'), $result);

@オペレーターでエラーを抑制していなければ、PHP はおそらくそれを伝えていたでしょう。

于 2012-08-04T11:47:11.973 に答える