需要regex来更新我的字符串(存储过程调用)


Need regex to update my string (stored procedure call)

我有以下变量:

$array1=(array('in1', 1), array ('in2', 1));
$array2=(array('inout1', 2));
$array3=(array('out1', 5), array ('out2', 5));

注意:所有三个数组的计数=5

$sp_name='myProc';

我从一些函数等中得到了以上三个数组。

我需要从上面的数组中得到的是下面的字符串:

$sql='{call myProc(?, ?, ?, ?, ?)}';

我在想一些正则表达式,它会添加(?,?…,?)。。。这取决于三个动态阵列的元素的数量。在我的例子中有5个问号。

此外,我需要将所有三个阵列合并到一个$array_merged(array(some_col, some_int), array( ....));

有什么想法吗?

谢谢。

也可以使用regex,但根本没有必要:

<?php
$array1 = array(array('in1', 1), array('in2', 1));
$array2 = array(array('inout1', 2));
$array3 = array(array('out1', 5), array('out2', 5));
$array_merged = array_merge($array1, $array2, $array3);
$sql = '{call myProc(' . implode(', ', array_fill(0, count($array_merged), '?')) . ')}';
echo '<pre>';
print_r($array_merged);
echo '</pre>';
echo $sql;

您可以使用循环构建字符串

$array = ['1', '2', '3', '4', '5',];
$string = ''; // create empty string variable
// loop and build string
foreach($array as $value){
    $string = $string . '?,';
}
$string = rtrim($string,','); // remove last comma
echo $string;
// prints ?,?,?,?,?