加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 通过引用传递密钥和值的替代方法:

发布时间:2020-12-13 13:27:13 所属栏目:PHP教程 来源:网络整理
导读:有人可以向我解释为什么你不能传递密钥作为参考? 例如: if(is_array($where)){ foreach($where as $key = $value){ $key = sec($key); $value = sec($value); } unset($key,$value);} 抛出: Fatal error: Key element cannot be a reference in linkstest
有人可以向我解释为什么你不能传递密钥作为参考?

例如:

if(is_array($where)){
    foreach($where as &$key => &$value){
        $key = sec($key);
        $value = sec($value);
    }
    unset($key,$value);
}

抛出:

Fatal error: Key element cannot be a reference in linkstest.php on line 2

我可以使用array_map做类似的事情吗?
我想要做的就是迭代一个关联数组,并使用我的sec()函数转义键和值.

阵列图很难让我理解:

我已经尝试过很多关于array_map的东西,但是我无法直接对它进行操作.

使用数组映射比使用foreach循环获得任何性能优势吗?

我不喜欢foreach的是我不能直接对数组执行操作,并且必须处理创建临时数组并取消设置它们:

foreach($where as $key => $value){
 $where[secure($key)] = secure($value);
}

如果它在键中找到要转义的内容,添加新元素并保持未转义的元素,则可能会失败.

所以我坚持这样的事情?

$temparr = array();
foreach($where as $key => $value){
 $temparr[secure($key)] = secure($value);
}
$where = $temparr;
unset($temparr);

任何替代品?

Can someone explain to me why you can’t pass a key as reference?

因为语言不支持这个.你很难在大多数语言中找到这种能力,因此称为关键词.

So am I stuck with something like this?

是.最好的方法是使用适当的键创建一个新数组.

Any alternatives?

提供更好的替代方案的唯一方法是了解您的具体情况.如果您的键映射到表列名称,那么最好的方法是将键保持原样,并在SQL中使用它们时将其转义.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读