我正在寻找最好的方式来做这件事情直到未来可能无法做到的事情:
// Only one of these, different each time
$arg_string = "'arg1', 'arg2', 'arg3'"; // Unknown number of arguments!
$arg_string = "'arg1', 'arg2', 'arg3', 'arg4'"; // Unknown number of arguments!
$arg_string = "'arg1'"; // Unknown number of arguments!
// Where I need help
$stmt->execute([$arg_string]); // Wish I could, maybe PHP 9 will
我的问题是 $string
或 $array
不能轻松传递给 function()
作为其参数。
这对我的工作很重要,因为我正在创建一种查询数据库的方法,而我可能有未知数量的列或值。这是代码在使用 exec()
之前的样子。
我发现这个 SO article (PHP use variable to pass multiple arguments to function) 讨论了 call_user_func_array()
。但是,我不知道如何将 call_user_func_array()
与 execute()
一起使用。即使我猜,我还是想知道什么是最好的。
我不介意先将 $arg_string
变成数组,或者不介意,无论哪个是最好的。
做它不能做的事情的最佳方法是什么:
$stmt->execute([$arg_string]);
答案 0 :(得分:0)
你不需要一个字符串,每个 arg 应该是一个单独的数组元素。
$arg_array = ['arg1']; // or
$arg_array = ['arg1', 'arg2']; // or
$arg_array = ['arg1', 'arg2', 'arg3'];
$stmt->execute($arg_array);
答案 1 :(得分:0)
来自PDOStatement::execute | php.net:
// Only one of these, different each time
$arg_string = "'arg1', 'arg2', 'arg3'"; // Unknown number of arguments!
$arg_string = "'arg1', 'arg2', 'arg3', 'arg4'"; // Unknown number of arguments!
$arg_string = "'arg1'"; // Unknown number of arguments!
// Where I need help
$arg_array = explode(",", str_replace(["'", ' '], '', $arg_string)); // My solution
$stmt->execute([$arg_array]);