Array_diff不接受参数



我试图得到两个文件的差异:

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

我该如何处理这个?

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

$firstArray = json_decode($first, true);

如果省略第二个参数,$ firststarray将是一个对象,即stdClass的实例。

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

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

更新:
即使已经正确地将JSON字符串转换为数组,仍然会遇到问题,因为array_diff()只适用于一维数组,正如文档的Notes部分所提到的那样。要能够在多维数组上使用in,请查看文档中的注释。

你的意思可能是

$first = json_decode(file_get_contents('lalala.json'), true);
$second = json_decode(file_get_contents('alabala.json'), true);

相关内容

  • 没有找到相关文章

最新更新