我希望我理解正確的問題。如果數據標準化的第一個你可以比較陣列
例如:
$a = array(
10 => 'net',
12 => 'evlewt',
22 => '10,12,11',
30 => '12,10'
);
$b = array(
10 => 'net',
12 => 'evlewt',
22 => '11,12,10',
30 => '12,10'
);
function normalize(&$value, $key) {
$value = explode(',', $value);
sort($value);
$value = implode(',', $value);
}
array_walk($a, 'normalize');
array_walk($b, 'normalize');
var_dump($a == $b); // outputs true
編輯:爲了通過任一數組中的元素是否是另一個的子集,以評估兩個數組,我會正常化值來排列和使用reduce_array()
函數。
<?php
$a = array(
10 => 'net',
12 => 'evlew',
22 => '10,12,11',
30 => '12,10,11'
);
$b = array(
10 => 'net',
12 => 'evlewt',
22 => '11,12,10',
30 => '12,10'
);
function normalize(&$value, $key) {
$value = explode(',', $value);
}
function compare_value($v, $w) {
if (false === $v) return false;
global $a, $b;
if(is_subset($a[$w], $b[$w]) || is_subset($b[$w], $a[$w]))
return true;
return false;
}
function is_subset($needle, $haystack) {
return count(array_intersect($needle, $haystack)) === count($needle);
}
array_walk($a, 'normalize');
array_walk($b, 'normalize');
$result = array_reduce(array_keys($a), 'compare_value', true);
var_dump($result); // outputs false
$a = array(
10 => 'net',
12 => 'evlewt',
22 => '10',
30 => '12,10,11'
);
$b = array(
10 => 'net',
12 => 'evlewt',
22 => '11,12,10',
30 => '12,10'
);
array_walk($a, 'normalize');
array_walk($b, 'normalize');
$result = array_reduce(array_keys($a), 'compare_value', true);
var_dump($result); // outputs true
你在找什麼?你需要知道兩個數組是否相同?你需要知道哪些數組鍵具有相同的值嗎? – siimsoni 2012-07-11 16:49:55
@KSiimson這兩個數組總是會有一組相同的鍵。值可能會改變。我只是想比較這些值,看看它們是否相同。但問題是像我上面解釋的CSV值。 – 2012-07-11 16:54:55