在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(),上面的数组作为其参数
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |