Saturday, 23 July 2011

Изменение итерируемой структуры из цикла foreach в PHP

Стандартно итерация производится так:
foreach ( $invitems as $item ) {

И если попробовать сделать что-то в стиле: $item['soma_key'] = 'some_val', то как ожидается это не сработает (в отличие от Perl, там такое поведение стандартно).

Чтобы такой механизм заработал, нужно немного скорректировать вид цикла:
foreach ( $invitems as &$item ) {

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

2 comments:

  1. Я может затеи не понял, но можно сделать и так:
    foreach ($invitems as $key => $item) {
    $item[$key] = 'some_val';
    }

    ReplyDelete
  2. Тогда уж:

    foreach ($invitems as $key => $item) {
    $invitems[$key] = 'some_val';
    }

    ReplyDelete

Note: only a member of this blog may post a comment.