Почему ссылки на элементы массива не работают в этой ситуации?

Эта ссылка работает:

$awesome_array = array (1,2,3);
$cool_array = array (4,5,6);

$ref = &$awesome_array; // reference awesome_array
$awesome_array = $cool_array;
echo $ref; //produces (4,5,6) as expected

Эта ссылка также работает:

$array[0] = "original";
$element_reference = &$array[0]; // reference $array[0]
$array[0] = "modified";
echo $element_reference; // returns "modified" as expected.

Но ссылка на элементы в массиве не работает, когда вы изменяете весь массив. Как вы справляетесь с этим?

$array = array (1,2,3);
$new_array = array (4,5,6);

$element_reference = &$array[0]; // reference $array[0]
$array = $new_array; // CHANGE ENTIRE ARRAY
echo $element_reference; // returns 1 despite the fact that the entire array changed. I need it to return 4?

Почему он не возвращает 4, так как массив изменился? Как вы ссылаетесь на элемент, чтобы он возвращал 4?

2

Решение

Ссылка к элементу в массиве, а также не чтобы «индекс в переменную с именем $arrayMsgstr «Как таковая, ни одна из ссылок (для элементов в старом массиве) не применима к новому массиву.

Исходные ссылки по-прежнему ссылаются на исходный массив и элементы в нем; даже если исходный массив больше не доступен сразу.

Чтобы сослаться на определенный индекс переменной, которая разрешается в массиве, просто используйте обычную операцию индексации:

$array = array (1,2,3);
$new_array = array (4,5,6);

$i = 0;
echo $array[$i];     // -> 1

$array = $new_array; // reassign variable with new array
echo $array[$i];     // -> 4
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]