我有以下变量:
$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 ?,?,?,?,?