unset пары, если совпадают и никогда не повторяются php
Как я могу сбросить пары, если совпадают?
$pair = array(
array('number' => 1000),
array('number' => 2000),
array('number' => 3000),
array('number' => 2000),
array('number' => 2000)
);
if(sizeof($pair) >= 2) {
$i = 1;
$pair_A = $pair[0];
while(sizeof($pair) > $i) {
$pair_B = $pair[$i];
if($pair_A['number'] == $pair_B['number']) {
//with match
} else {
//no match
}
$i++;
unset($pair_B);
}
unset($pair_A);
}
Значение переменной $pair_A всегда повторяется, даже если я ее отключил.
Я хочу получить результат в паре с двумя:
1. No Match = 1000 empty
2. Match with #4 = 2000 2000
3. No Match = 3000 empty
4. Match with #2 = 2000 2000
5. No Match = 2000 empty
Если совпадение, соответствующее значение также будет соответствовать как #2 и #3 (наоборот, сопоставление, я думаю).
Это возможно? Пожалуйста, помогите мне, у меня проблемы в этом потоке уже несколько месяцев... Я надеюсь, что вы, ребята, можете мне помочь.
1 ответ
Решение
Ваш необходимый вывод придет сюда.
<?php
$pair = array(
array('number' => 1000),
array('number' => 2000),
array('number' => 3000),
array('number' => 2000),
array('number' => 2000)
);
foreach($pair as $key1=>$array1) {
$isMatched = false;
foreach($pair as $key2=>$array2) {
if($key1!=$key2 && $array1["number"]==$array2["number"]) {
$key = $key2+1;
$pair[$key2]["number"] = "";
$data = "Match with #$key $array1[number] $array2[number]";
$isMatched = true;
break;
}
}
$key1++;
if($isMatched) {
echo $key1.". ".$data."<br>";
} else {
echo $key1.". No Match = $array1[number] empty"."<br>";
}
}
?>
Выход:
1. No Match = 1000 empty
2. Match with #4 2000 2000
3. No Match = 3000 empty
4. Match with #2 2000 2000
5. No Match = 2000 empty