$a = 1;
$b = 2;
$array[] = &$a; // Два элемента - ссылка на $a
$array[] = &$a;
$array[] = &$b; // Один элемент - ссылка на $b
$array[0]++;
// Естественно изменилось и значение $array[1]:
print_r($array);
// Array ( [0] => 2 [1] => 2 [2] => 2 )
print_r(array_unique($array));
// Array ( [0] => 2 )
// Из трех ссылок, две из которых уникальны, осталась только одна
Мне требуется, чтобы после операции уникализации на выходе был массив, содержащий одну ссылку на $a и одну на $b.
Как реализовать?
Спасибо!
Upd:
Как вообще сравнить две ссылки на эквивалентность?
Для кода выше:
$array[0] === $array[1] // true
$array[0] === $array[2] // true :(
Ответ на этот вопрос подсказали в комментариях:
function is_ref_to(&$a, &$b)
{
$t = $a;
if($r=($b===($a=1))){ $r = ($b===($a=0)); }
$a = $t;
return $r;
}