Ben*_*Ben 8 php arrays recursion foreach array-map
有人可以向我解释为什么你不能传递密钥作为参考?
例如:
if(is_array($where)){
foreach($where as &$key => &$value){
$key = sec($key);
$value = sec($value);
}
unset($key, $value);
}
Run Code Online (Sandbox Code Playgroud)
抛出:
Fatal error: Key element cannot be a reference in linkstest.php on line 2
Run Code Online (Sandbox Code Playgroud)
我可以使用array_map做类似的事情吗?我想要做的就是迭代一个关联数组,并使用我的sec()函数转义键和值.
阵列图很难让我理解:
我已经尝试过很多关于array_map的东西,但是我无法直接对它进行操作.
使用数组映射比使用foreach循环获得任何性能优势吗?
我不喜欢foreach的是我无法直接对数组执行操作,并且必须处理创建临时数组并取消设置它们:
foreach($where as $key => $value){
$where[secure($key)] = secure($value);
}
Run Code Online (Sandbox Code Playgroud)
如果它在键中找到要转义的内容,添加新元素并保持未转义的元素,则可能会失败.
所以我坚持这样的事情?
$temparr = array();
foreach($where as $key => $value){
$temparr[secure($key)] = secure($value);
}
$where = $temparr;
unset($temparr);
Run Code Online (Sandbox Code Playgroud)
任何替代品?
web*_*ave 10
有人可以向我解释为什么你不能传递密钥作为参考?
因为语言不支持这个.你很难在大多数语言中找到这种能力,因此称为密钥.
所以我坚持这样的事情?
是.最好的方法是使用适当的键创建一个新数组.
任何替代品?
提供更好的替代方案的唯一方法是了解您的具体情况.如果您的键映射到表列名称,那么最好的方法是将键保持原样,并在SQL中使用它们时将其转义.
| 归档时间: |
|
| 查看次数: |
6678 次 |
| 最近记录: |