array_walk не делает прогулку для меня

Когда я передаю массив в качестве дополнительного аргумента для обхода массива, он не интерпретируется так, как я ожидал.

function boom($item, $z )
{
print_r("\n".$item);
print_r("\n".$z);
}

$z=[ "alpha", "bravo" ];
$x=[ "one", "two" ];
array_walk( $x, 'boom', $z );

Выход:

one
0
two
1

Почему ноль и один напечатан?
Почему я не печатаю альфа и браво? Как я могу получить альфа и браво включены в вывод?

Спасибо!

0

Решение

Вы должны изменить код, чтобы передать $ z в качестве третьего параметра, например:

function boom($item, $i, $z )
{
print_r("\n".$item);
print_r("\n".$z[$i]);
}

$z=[ "alpha", "bravo" ];
$x=[ "one", "two" ];
array_walk( $x, 'boom', $z );

Вы можете найти больше здесь: http://php.net/manual/en/function.array-walk.php

Если указан необязательный параметр userdata, он будет передан как
третий параметр для обратного вызова.

1

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

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