我正在尝试使用use
关键字将变量导入我的闭包中。但解析器抱怨支架。如果要将变量导入范围,是否不允许使用数组元素?我只允许导入完整变量(即$_POST
本身)吗?
$data = array_map(function($key, $value) use ($tv, $_POST['entity'] as $entity) {
...
}, $keys, $values);
错误是:解析错误:语法错误,意外'[',期待','或')'。
答案 0 :(得分:2)
$_POST['entity']
确实不是变量,它是数组的索引。你不能use
那个。想想结果应该是什么样的。这是否意味着您只能访问闭包内的$_POST['entity']
,而不能访问$_POST
中的其他索引?几乎没有意义。只有$_POST
才有可能。但是,$_POST
是一个超级全局,它位于范围无处不在。无需use
。
答案 1 :(得分:1)
$_POST['entity'] as $entity
你做不到。您只能use
个变量,而不能是数组索引。
最好的办法是将$_POST['entity']
保存到变量中,然后将其添加到use
语句中。
$entity = $_POST['entity'];
$data = array_map(function($key, $value) use ($tv, $entity) {
//...
}, $keys, $values);
事情是,$_POST
实际上是superglobal,意味着它存在于任何范围内。
$data = array_map(function($key, $value) use ($tv) {
$entity = $_POST['entity'];
//...
}, $keys, $values);