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

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

Спасибо!

1 ответ

Решение

Вы должны изменить код, чтобы передать $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, он будет передан в качестве третьего параметра обратному вызову.

Другие вопросы по тегам