如何合并数组以使输出看起来像这样?
($ a [0] $ b [0] $ a [1] $ b [1] $ a [2] $ b [2] ......)
回到问题的故事
我正在尝试从两个数组构建一个包含数据(字符串)的字符串 构建一些Sql。
以下是我从代码中获取的错误集。
数组([0] => test@test.test [1] => testpass [2] =>)
数组([0] => SELECT hosts.Email,hosts.LName,hosts.FName,hosts.ID FROM hosts WHERE> Email = [1] => AND Password = [2] =&gt ;; )
SELECT hosts.Email,hosts.LName,hosts.FName,hosts.ID FROM hosts WHERE Email = AND Password =; test@test.testtestpassblank line
错误:您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第1行的“AND Password =; test@test.testtestpass”附近使用正确的语法
我需要帮助的一行是
foreach(array_merge($ ArrSql,$ input)as $ SqlArray){//合并数组以构建字符串
我希望输出像
$ a [0] $ b [0] $ a [1] $ b [1] $ a [2] $ b [2] ......
但我得到的是
$ a [0] $ a [1] $ a [2] $ b [0] $ b [1] $ b [2] ......
好的,这是我的代码碰撞可能会有所帮助。
感谢您的时间, 萨姆
public function ReturnData($Sql, $BindVars) {
$BindVars[] = '';// needed for pading
$FilledSql = '';
$mysqli = DataBase::ConDataBase();
$ArrSql = explode("?", $Sql); //splitting the code on '?' so that it can dynamically add the values
foreach ($BindVars as $value) {
$input[] = $mysqli->real_escape_string($value);// cleaning the input
}
print_r($input);echo "<br>";//testting to see if data is filled
print_r($ArrSql);echo "<br>". "<br>";//testting to see if array was filled correctly
foreach ( array_merge( $ArrSql, $input) as $SqlArray) {//merge arrays to build string
$FilledSql .= $SqlArray; //anding combind strings from the arrays
}
echo($FilledSql); Echo "blank line" . "<br>". "<br>";//
return $FilledSql;
}
答案 0 :(得分:1)
您可以使用已经实施的foreach,但方式不同。首先,我假设您将始终为每个阵列提供正确数量的数据(例如,您的阵列具有相同数量的键)。
您可以这样做:
$resultSql = '';
foreach ( $ArrSql as $key => $sqlString ) {
$resultSql .= $sqlString . ( ( isset ( $input[$key] ) ) ? $input[$key] : '' );
}
这将导致您需要的字符串。它可能很简单但只要你总是使用具有相同数量键的数组就可以工作。