Кто-нибудь знает, почему эта итерация PHP не будет работать - PullRequest
0 голосов
/ 08 декабря 2010

Кто-нибудь знает, почему это не работает

function my_current($array) {
    return current($array);
}

$array = array(1,3,5,7,13);

while($i = my_current($array)) {
    $content .= $i.',';
    next($array);
}

но это делает

$array = array(1,3,5,7,13);

while($i = current($array)) {
    $content .= $i.',';
    next($array);
}

или как заставить работать верхний?Это маленький вопрос, но это очень поможет!Спасибо, Ричард

Ответы [ 3 ]

3 голосов
/ 08 декабря 2010

Массив копируется, что означает, что текущий указатель потерян.Передайте его как ссылку.

function my_current(&$array) {

Или еще лучше, используйте implode().

2 голосов
/ 08 декабря 2010

Я думаю, это потому, что когда вы вызываете функцию с параметром массива, массив копируется.Попробуйте использовать ссылки.

function my_current(&$array) {
    return current($array);
}

Обратите внимание на &.

2 голосов
/ 08 декабря 2010

По умолчанию создается копия массива.

Попробуйте это:

function my_current(&$array) {
    return current($array);
}
...