2013-05-09 2 views
1

내가 두 파일의 차이를 얻기 위해 노력하고 있어요 :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) 할 경우 출력은 내가이 문제를 처리하는 방법을

Array ([0] => [{"name":"Tim Pearson","id":"17118"},{"name":"Ashley Danchen Chen","id":"504829084"},{"name":"Foisor Veronica","id":"100005485446135"}]) 

입니다 $first의 내용이 될 것인가?

답변

0

먼저 JSON 객체를 배열로 변환 한 다음 두 배열의 차이점을 찾아야합니다. 두 번째 매개 변수로 true으로 배열 사용 json_decode()로 JSON 문자열을 변환하려면 :

$firstArray = json_decode($first, true); 

을 당신이 밖으로 두 번째 매개 변수를두면, $ firstArray와 객체 것, 그 stdClass의 인스턴스입니다.

그러나 먼저 문자열로 파일의 내용을 필요 했어, 그래서 더 나은 file_get_contents() 사용

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

업데이트 : 제대로 배열로 JSON 문자열로 변환 한해도
, array_diff()은 문서의 Notes 섹션에서 언급했듯이 1 차원 배열에서만 작동하므로 여전히 문제가 발생합니다. 다차원 배열에서 사용할 수 있으려면 this comment을 문서에서 살펴보십시오.

+0

진정한 의미를 무엇? 이 문맥에서는 물론 –

+0

문자열을 객체 (stdClass의 인스턴스) 대신 배열로 변환합니다 – Havelock

+0

하지만 이제는 어떤 이유로 출력이 빈 배열입니다 –

0

당신은 아마 의미

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