PHP合并数组,因此两个集合的数据是连续的$ a [0] $ b [0] $ a [1] $ b [1]

时间:2014-05-08 15:27:58

标签: php mysql sql arrays

如何合并数组以使输出看起来像这样?

  

($ 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;
}

1 个答案:

答案 0 :(得分:1)

您可以使用已经实施的foreach,但方式不同。首先,我假设您将始终为每个阵列提供正确数量的数据(例如,您的阵列具有相同数量的键)。

您可以这样做:

$resultSql = '';
foreach ( $ArrSql as $key => $sqlString ) {
    $resultSql .= $sqlString . ( ( isset ( $input[$key] ) ) ? $input[$key] : '' );
}

这将导致您需要的字符串。它可能很简单但只要你总是使用具有相同数量键的数组就可以工作。