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

在PHP中使用字符串(:)前缀数组键

发布时间:2020-12-13 17:51:17 所属栏目:PHP教程 来源:网络整理
导读:快一点;我知道一个解决方案,但如果它存在,我正在寻找更优雅的东西. 我正在使用PDO进行预先准备的声明: $sql = "INSERT INTO my_table (foo,bar,baz) VALUES (:foo,:bar,:baz)";$source-execute($sql,array( ':foo' = $foo,':bar' = $bar,':baz' = $baz,));
快一点;我知道一个解决方案,但如果它存在,我正在寻找更优雅的东西.

我正在使用PDO进行预先准备的声明:

$sql = "INSERT INTO my_table (foo,bar,baz) VALUES (:foo,:bar,:baz)";

$source->execute($sql,array(
    ':foo' => $foo,':bar' => $bar,':baz' => $baz,));

这很好,但我想传入一个先前创建的数组,但是包含的键没有以冒号(:)为前缀,我认为必须有一个优雅的方式:

$array = array(
    'foo' => 'some','bar' => 'random','baz' => 'value',);

并将其翻译成:

$array = array(
    ':foo' => 'some',':bar' => 'random',':baz' => 'value',);

没有做:

$temp = array();
foreach($array as $key => $value){
    $temp[':' . $key] = $value;
}
$array = $temp;

我浏览过PHP文档,但是我找不到适合此目的的函数(或序列).

有任何想法吗?

附录

留下接受的答案,但1 @chim为他聪明的1班轮;在我的XY问题中解决了X.重新格式化的解决方案:

$format = ':%s';
$values = array_flip(array_map(function ($key) use($format) {
    return sprintf($format,$key);
},array_flip($values)));

包含在函数中,也许是array_keys_format(array $array,$format)

$source->execute($sql,array(
    'foo' => $foo,'bar' => $bar,'baz' => $baz
));

这假设上面调用了PDOStatement :: execute(),上面的数组作为其参数

(编辑:李大同)

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

    推荐文章
      热点阅读