Как перезаписать ассоциацию указателя в php?Или как работать с массивами с n размерами? - PullRequest
0 голосов
/ 25 сентября 2010

У меня неприятная маленькая проблема с оператором указателя в php (&). Я хочу пройти через цикл while, который записывает данные в массив. Каждый раз предполагается записать в следующее измерение массива (1-е в $ array, затем в $ array [0], затем в array [0] [0] и т. Д.) Я хотел сделать это, связавшись с $ array указателем, а затем изменив указатель следующим образом:

$pointer = &array;
while($bla){
  $pointer = &$pointer[0];
}

Так что каждый раз, когда срабатывает указатель, ссылается на дальнейшее измерение $ array. Это, похоже, не работает ...

Я бы очень признателен за вашу помощь, спасибо.

Ответы [ 2 ]

0 голосов
/ 25 сентября 2010

Я попробовал ваш код, и он работает.Тест:

<?php
    error_reporting(E_ALL | E_STRICT);

    $array = array();
    $ptr =& $array;
    for ($i = 0; $i < 10; ++$i) {
        $ptr[0] = array();
        $ptr =& $ptr[0];
    }

    unset($ptr);
    var_dump($array);

    $ptr =& $array;
    while (!empty($ptr)){
        $ptr =& $ptr[0];
        var_dump($ptr);
    }

Сначала создается массив, а затем цикл.

0 голосов
/ 25 сентября 2010

Я не уверен, что это то, что вы хотели, но вот вы здесь.: -)

$a = array();

$b = &$a;

for ($i = 0; $i < 6; $i++) {
    $a[0] = array();
    $a = &$a[0];
}

print_r($b);

Выходы:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => Array
                        (
                            [0] => Array
                                (
                                    [0] => Array
                                        (
                                            [0] => Array
                                                (
                                                )

                                        )

                                )

                        )

                )

        )

)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...