1

我正在尝试区分两个文件:

$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"}] )

我该如何处理?

4

2 回答 2

0

你大概是说

$first = json_decode(file_get_contents('lalala.json'), true);
$second = json_decode(file_get_contents('alabala.json'), true);
于 2013-05-09T13:34:10.733 回答
0

您需要先将 JSON 对象转换为数组,然后找出两个数组之间的差异。要将 JSON 字符串转换为数组,请使用json_decode()withtrue作为第二个参数:

$firstArray = json_decode($first, true);

如果省略第二个参数,$firstArray 将是一个对象,即stdClass.

但首先您需要将文件的内容作为字符串,所以最好使用file_get_contents()

$first = file_get_contents('lalala.json');

更新:
即使您已将 JSON 字符串正确转换为数组,您仍然会遇到问题,因为它array_diff()仅适用于一维数组,如Notes文档部分所述。为了能够在多维数组上使用,请查看文档的此注释

于 2013-05-09T13:32:53.070 回答