두 배열 간의 차이
PHP두 배열 간의 차이
나는 두 개의 배열을 따르고있다. 나는이 두 배열의 차이점을 원한다. 즉, 두 배열에 존재하지 않는 값을 어떻게 찾을 수 있습니까?
$array1=Array ( [0] => 64 [1] => 98 [2] => 112 [3] => 92 [4] => 92 [5] => 92 ) ;
$array2=Array ( [0] => 3 [1] => 26 [2] => 38 [3] => 40 [4] => 44 [5] => 46 [6] => 48 [7] => 52 [8] => 64 [9] => 68 [10] => 70 [11] => 72 [12] => 102 [13] => 104 [14] => 106 [15] => 92 [16] => 94 [17] => 96 [18] => 98 [19] => 100 [20] => 108 [21] => 110 [22] => 112);
해결법
-
==============================
1.참고 :이 대답은 $ array1에 존재하지 않는 $ array2의 값을 반환 할 것이고 $ array2에없는 $ array1의 값을 반환하지 않을 것입니다.
참고 :이 대답은 $ array1에 존재하지 않는 $ array2의 값을 반환 할 것이고 $ array2에없는 $ array1의 값을 반환하지 않을 것입니다.
$diff = array_diff($array2, $array1);
array_diff ()
-
==============================
2.두 배열의 차이점을 얻으려면 다음을 수행해야합니다.
두 배열의 차이점을 얻으려면 다음을 수행해야합니다.
$fullDiff = array_merge(array_diff($array1, $array2), array_diff($array2, $array1));
그 이유는 array_diff ()가 $ array1에있는 값만 제공하고 $ array2는 아닌 다른 값을 제공하기 때문입니다. 위는 둘 다 줄 것입니다.
-
==============================
3.재귀 적으로 배열을 변경하려면이 함수를 사용하십시오.
재귀 적으로 배열을 변경하려면이 함수를 사용하십시오.
function arrayDiffRecursive($firstArray, $secondArray, $reverseKey = false) { $oldKey = 'old'; $newKey = 'new'; if ($reverseKey) { $oldKey = 'new'; $newKey = 'old'; } $difference = []; foreach ($firstArray as $firstKey => $firstValue) { if (is_array($firstValue)) { if (!array_key_exists($firstKey, $secondArray) || !is_array($secondArray[$firstKey])) { $difference[$oldKey][$firstKey] = $firstValue; $difference[$newKey][$firstKey] = ''; } else { $newDiff = arrayDiffRecursive($firstValue, $secondArray[$firstKey], $reverseKey); if (!empty($newDiff)) { $difference[$oldKey][$firstKey] = $newDiff[$oldKey]; $difference[$newKey][$firstKey] = $newDiff[$newKey]; } } } else { if (!array_key_exists($firstKey, $secondArray) || $secondArray[$firstKey] != $firstValue) { $difference[$oldKey][$firstKey] = $firstValue; $difference[$newKey][$firstKey] = $secondArray[$firstKey]; } } } return $difference; }
테스트:
$differences = array_replace_recursive( arrayDiffRecursive($firstArray, $secondArray), arrayDiffRecursive($secondArray, $firstArray, true) ); var_dump($differences);
-
==============================
4.array_diff?
array_diff?
http://php.net/array_diff
var_dump(array_diff($array2, $array1));
-
==============================
5.
<?php function getArrayDiff($a1, $a2) { $result = array(); print_r($a1); print_r($a2); // If First Array is Bigger than Second if( count($a1) > count($a2) ) { $result=array_diff($a1,$a2); } // If Second Array is Bigger than First if( count($a1) < count($a2) ) { $result=array_diff($a2,$a1); } // If Both array are same but, data values are different. else { $result = array_merge (array_diff($a2,$a1), array_diff($a1,$a2)); } return $result; } print "<pre>"; // First Array is Big echo "First Array is Big <br/>"; $a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow"); $a2=array("e"=>"red","f"=>"green","g"=>"blue"); print_r( getArrayDiff($a1, $a2) ); // Second Array is Big echo "Second Array is Big <br/>"; $a1=array("e"=>"red","f"=>"green","g"=>"blue"); $a2=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow"); print_r( getArrayDiff($a1, $a2) ); // Both Array are same echo "Both Array are same <br/>"; $a1=array("a"=>"red","b"=>"green","d"=>"yellow"); $a2=array("e"=>"red","f"=>"green","g"=>"blue"); print_r( getArrayDiff($a1, $a2) ); ?>
First Array is Big Array ( [a] => red [b] => green [c] => blue [d] => yellow ) Array ( [e] => red [f] => green [g] => blue ) Array ( [d] => yellow ) Second Array is Big Array ( [e] => red [f] => green [g] => blue ) Array ( [a] => red [b] => green [c] => blue [d] => yellow ) Array ( [d] => yellow ) Both Array are same Array ( [a] => red [b] => green [d] => yellow ) Array ( [e] => red [f] => green [g] => blue ) Array ( [g] => blue [d] => yellow )
from https://stackoverflow.com/questions/10077840/difference-between-two-arrays by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
preg_match (); - 알 수없는 수정 자 '+'[중복] (0) | 2018.09.15 |
---|---|
Mysqli_Query 경고 : mysqli_query ()는 매개 변수 1이 mysqli [duplicate]가 될 것으로 기대합니다. (0) | 2018.09.15 |
경고 : mysqli_connect () : (HY000 / 1045) : 사용자 'username'@ 'localhost'에 대한 액세스가 거부되었습니다 (암호 사용 : 예) (0) | 2018.09.15 |
정의되지 않은 함수 mysql_connect () (0) | 2018.09.15 |
PHP에서 RSA로 텍스트 암호화 및 암호 해독 (0) | 2018.09.15 |