我正在提取数据,然后创建一个数组,如下所示:
$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!
}
你尝试用关联数组定义做什么,用当前的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
可能不是一个好主意。
你的想法是正确的,但还不够大!
您希望定义一个输入架构,如下所示:
$input = $_POST;
$input_schema = array(
"foo" => "string",
"bar" => "string"
);
validate_input($input, $schema);
从那时起,您可以按照架构安全地使用$input
。