Мой сценарий таков: у меня есть два набора значений, которые мне нужно проверить на различия. Однако array_diff не учитывает дублирование и, следовательно, не будет служить моей цели. Скажем, у нас есть следующие массивы:
$valuesA = array('1.00', '3.00', '1.00', '2.00', '3.00', '1.00');
$valuesB = array('1.00', '3.00', '2.00');
Теперь я хочу выполнить проверку разницы между этими двумя, но учитывать дубликаты. По существу после "diff" существовал бы следующий массив:
array('1.00', '3.00', '1.00');
Теперь, как я это сделал, было следующее:
foreach ($valuesA as $indexA => $valueA) {
foreach ($valuesB as $indexB => $valueB) {
if($valueA == $valueB){
unset($valuesB[$indexB]);
unset($valuesA[$indexA]);
continue 2;
}
}
}
Я всегда чувствовал, что всякий раз, когда я пишу вложенные циклы, подобные этим предкам, я делаю что-то неправильно или что там уже существует лучшее решение. Поэтому мой вопрос таков:
Есть ли лучший способ достичь того, что делают эти вложенные предвидения?
array_intersect($valuesA, $valuesB);
array('1.00', '3.00', '1.00');
фактически прочитанныйarray('1.00', '3.00', '2.00');
потому что 1,00, 3,00 и 2,00 являются единственными уникальными значениями, или я неправильно понимаю, что вы ищете?