Увеличение индекса в foreach - PullRequest
1 голос
/ 21 декабря 2011

Почему я получаю другой вывод с $key++ и $key+1?

Что я должен сделать, чтобы обратиться к следующему элементу в цикле, используя foreach?

foreach($diff as $key=>$val) {

if(in_array($diff[$key],$common) && in_array($diff[$key+1],$common)) {}

if(in_array($diff[$key],$common) && in_array($diff[$key++],$common)) {}

}

Ответы [ 5 ]

4 голосов
/ 21 декабря 2011

Вы должны использовать первое, так как нет оснований для изменения $key.

2 голосов
/ 21 декабря 2011

$x++ возвращает старое значение $x (до приращения).Например, $x=3; print $x++; выведет «3». Это также изменяет $x, так что это не лучший выбор, если это не ваше намерение.(Здесь приращение будет довольно бесполезным, особенно потому, что измененные ключи никогда не видят снаружи цикла.)

++$x вернет новое значение $x.Как и $x++, семантически неправильно просто получать следующий номер, так как он изменяет $x.

Просто придерживайтесь $x + 1.

0 голосов
/ 21 декабря 2011

$key + 1 добавит к ключу, но на самом деле приращение $key.

$key++ примет значение $key и после его возврата увеличит $ key (после использования).

0 голосов
/ 21 декабря 2011

$key++ увеличивает значение $key на 1.

$key+1 добавляет 1 к значению $key, но не изменяет его.

0 голосов
/ 21 декабря 2011
$key+1

Всегда просто добавляет 1 к $key для этого экземпляра. $key совсем не изменяет

$key++

Увеличивает значение $key и сохраняет это значение при запуске следующего цикла

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