Мой сценарий таков: у меня есть два набора значений, которые мне нужно проверить на различия. Однако 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;
}
}
}
Я всегда чувствовал, что всякий раз, когда я пишу вложенные циклы, такие как эти foreach, я делаю что-то не так или что уже существует лучшее решение.
Итак, мой вопрос заключается в следующем:
Есть ли лучший способ достичь того, что делают эти вложенные foreach?
array_intersect($valuesA, $valuesB);
Других решений пока нет …