Foreach通过引用,只有一些数组项

时间:2013-11-14 23:53:31

标签: php reference foreach

我有一个$args数组。我想改变其中的一些值。

代码

foreach( array( $args['key_to_validate'], $args['another_one'] ) as &$arg ) {
    $arg = validate($arg);
}

根据PHP Manual无效,并提供语法错误。

所以我必须这样做:

$arguments_to_validate[] =& $args['key_to_validate'];
$arguments_to_validate[] =& $args['another_one'];

foreach ( $arguments_to_validate as &$arg ) {
    $arg = validate($arg);
}

另一种方式:

$argument_keys_to_validate = array( 'key_to_validate', 'another_one' );
foreach ( $argument_keys_to_validate as $key ) {
    $current_arg =& $args[$key];
    $current_arg = validate( $current_arg );
}

有更优雅的方式吗?

2 个答案:

答案 0 :(得分:2)

foreach ( array( 'key_to_validate', 'another_one' ) as $key ) {
    validate($args[$key]);
}

确保您的验证函数通过引用获取参数。

答案 1 :(得分:0)

使用php 5.5,第一个变种将起作用。 :^)