-2

私はオブジェクトの配列を持っています。

$arr = array(0 => o1, 1 => o2);

これに適切な json_encode を取得します。言う、私は持っている:

$json_data = json_encode($arr);

しかし、json_decode変数の$json_data場合、2番目の引数が true の場合、すべてを配列形式で取得します。

array(0 => array, 1 =>array)

2 番目の引数が false の場合、すべてをオブジェクト形式で取得します。

object(0 => object, 1 => object)

元の配列を取り戻すには? つまり入手方法

array(0 => object, 1 => object)

編集:私の質問を言い換えます。オブジェクトの配列を json_encode するとき、エンコードされたデータを json_decode するときに同じオブジェクトの配列を取得するにはどうすればよいですか?

4

2 に答える 2

1

PHP 5.6.11-1ubuntu3.1 (cli) で次のコードを試してみたところ、驚くべきことに、私が望んでいたものを正確に得ることができました。この質問は非常に古いため、このコードを投稿したときにこれを試したときの PHP のバージョンを覚えていません。

コード:

<?php
class Test {
        public $message = "this is message";
        public $number = 10;
}
$t1 = new Test();
$t2 = new Test();
$arr = array(0 => $t1, 1 => $t2);
$json_data = json_encode($arr);
var_dump($json_data);
$original_array = json_decode($json_data, true);
$original_object = json_decode($json_data, false);
var_dump($original_array);
var_dump($original_object);
?>

私が得る出力は次のとおりです。

string(85) "[{"message":"this is message","number":10},{"message":"this is message","number":10}]"
array(2) {
  [0]=>
  array(2) {
    ["message"]=>
    string(15) "this is message"
    ["number"]=>
    int(10)
  }
  [1]=>
  array(2) {
    ["message"]=>
    string(15) "this is message"
    ["number"]=>
    int(10)
  }
}
array(2) {
  [0]=>
  object(stdClass)#3 (2) {
    ["message"]=>
    string(15) "this is message"
    ["number"]=>
    int(10)
  }
  [1]=>
  object(stdClass)#4 (2) {
    ["message"]=>
    string(15) "this is message"
    ["number"]=>
    int(10)
  }
}
于 2015-11-20T14:36:26.323 に答える