0
私はPHPで非常に奇妙で珍しい問題に直面しています。 オブジェクトの配列にarray_udiffを使用しています。 array_udiffで生成された配列を有効なJSON形式に変換できませんでした。PHP:array_udiffで生成された配列を有効なjsonに変換できないのはなぜですか?
私は同じ配列(array_udiffで生成された配列に等しい)を作成し、その配列をJSONで変換しました。しかし、このJSON構造は、まさに私が望むように完璧でした。
私はこの問題を再現するために非常に詳細に例を書いた:
<?php
$a = array((object) array('id'=>1, 'name'=>'abc'), (object) array('id'=>2, 'name'=>'xyz'), (object) array('id'=>6, 'name'=>'Amber'));
$b = array((object) array('id'=>3, 'name'=>'david'), (object) array('id'=>1, 'name'=>'abc'));
$c = array_udiff($a, $b, 'comp_func');
function comp_func($obj1, $obj2)
{
return $obj1->id-$obj2->id;
}
echo '<h1>Array Generated by array_udiff:</h1><br> ';
print_r($c);
echo "<br><strong>Invalid JSON:</strong></br>";
echo json_encode($c);
echo "<br><br><br>";
echo '<h1>Manually created array:</h1><br> ';
$d = array((object) array('id'=>2, 'name'=>'xyz'), (object) array('id'=>6, 'name'=>'Amber'));
print_r($d);
echo "<br><strong>Invalid JSON:</strong></br>";
echo json_encode($d);
出力
あなたは上記の例で見ることができるように: 両方の配列がしますprint_rによって印刷同様の構造を持っていますが、両方をJSONで変換しようとすると、両方の配列のJSON構造がスクリーンショットのように異なります。
私は貢献を感謝します。 ありがとう
から配列:
へ:あなたは、単にこの行を変更できますか?私はそれが正しい出力 –
だと思うので、jsonのみを受け入れるjavascript ajaxからjson出力を受け取っています。 エラー "parseerror"を投げています これは遠い話題です。今のところ大きな問題は、2つのJSONが異なる理由です。それらは両方とも同じ構造であるとみなされます – user2899728
あなたが見ているように、一方はオブジェクト指向ですが、他方はネストされています。 []と{}の違いをご確認ください –