我试图找出两个文件的区别:
$first = file('lalala.json');
$second = file('alabala.json');
//print_r($first);
//print_r($second);
$first_result = array_diff($first[0], $second[0]);
//$second_result = array_diff($second, $first);
print_r($first_result);
//print_r($second_result);
lalala.json
的内容是:
`[{"name":"Tim Pearson","id":"17118"},{"name":"Ashley Danchen Chen","id":"504829084"},{"name":"Foisor Veronica","id":"100005485446135"}]`
而alabala.json
的内容是
`[{"name":"Tim Pearson","id":"17118"},{"name":"Foisor Veronica","id":"100005485446135"}]`
然而问题是我收到错误,因为内容不会被识别为数组(错误是Argument #1 is not an array
)。如果我array_diff($first, $second)
,则输出将是$first
的内容
Array ( [0] => [{"name":"Tim Pearson","id":"17118"},{"name":"Ashley Danchen Chen","id":"504829084"},{"name":"Foisor Veronica","id":"100005485446135"}] )
我该如何处理?
答案 0 :(得分:0)
您需要先将JSON对象转换为数组,然后找到两个数组之间的差异。要将JSON字符串转换为数组,请使用json_decode()
并将true
作为第二个参数:
$firstArray = json_decode($first, true);
如果保留第二个参数,$ firstArray将是一个对象,即stdClass
的实例。
但首先您需要将文件内容作为字符串,因此最好使用file_get_contents()
:
$first = file_get_contents('lalala.json');
<强>更新强>
即使你已经将JSON字符串正确地转换为数组,你仍然会遇到问题,因为array_diff()
仅适用于一维数组,正如文档的Notes
部分所述。为了能够在多维数组上使用,请查看文档的this comment。
答案 1 :(得分:0)
你可能意味着
$first = json_decode(file_get_contents('lalala.json'), true);
$second = json_decode(file_get_contents('alabala.json'), true);