用于填充关联数组的快捷方式功能

时间:2014-03-31 16:53:14

标签: php function

我正在提取数据然后创建一个数组:

$foo = $_POST[ 'foo' ];
$bar = $_POST[ 'bar' ];

$val = array( 'foo' => $foo, 'bar' => $bar );

是否可以使用快捷功能?

如下所示:

$val = array( someFunction( 'foo' ), someFunction( 'bar' ) );

其中:

function someFunction( $name ) {
   return( "$name" => $_POST[ $name ] ); // Does not work!
}

2 个答案:

答案 0 :(得分:1)

使用当前的PHP语法,无法使用关联数组定义进行操作:

array( someFunction( 'foo' ), someFunction( 'bar' ) );

然而,这是我能想到的最接近的事情:

$_POST = array( 'foo' => 'FOO', 'bar' => 'BAR' );
$var = array();
someFunction( $var, 'foo' );
someFunction( $var, 'bar' );

function someFunction( &$output, $name ) {
    $output[$name] = $_POST[$name];
}

不是很性感,也可能会让人感到困惑,但是会做到这一点。

<强>更新

这是你正在寻找的 - 它更接近:

$var = ( list($foo, $bar) = $_POST );
// OR
$var = (array) ( list($foo, $bar) = $_POST );

显然,它高度依赖于数组结构,因此将它用于$_POST可能不是一个好主意。

答案 1 :(得分:0)

你正在思考正确的方向,但还不够大!

您想要定义一个输入架构,如:

$input = $_POST;
$input_schema = array(
    "foo" => "string",
    "bar" => "string"
);
validate_input($input, $schema);

从那时起,您可以根据您的架构安全地使用$input