0

mysqlクエリの結果を受け取り、多次元配列を返すクラス関数を作成しています。最初の配列ポインターはテーブル列で、2番目のポインターはMySQLデータ内の位置の数値インジケーターです。

たとえば、テーブルには次の列があります。

Groupname
Groupid
Groupurl

そして、私がこれを呼びたい方法は次のとおりです。

$arrayname[groupname][1];

私はすでに2つのアレイを形成しました:

$colnames特定のmysqlクエリからのすべての列が含まれています

$$colnameこれは、各列のすべてのデータを含む列名の変数変数です。例:$groupurlは、その列のすべてのデータを含む配列です。

配列を多次元オブジェクトとして結合するループを取得できないようです。特定のテーブルに対して手動でこれを行うことはできますが、それはクラス関数であり、変数変数の部分が壊れています= \

================アイデアをくれたIMSoPのおかげで、解決策は==================

関数の$resultは、テーブルに対するMySQLクエリの成功です。

function tableAsMatrix($result)
{
    //declare $results as array for use in loop
    $results = array();

    //this gets all the col names and sets them as $colnames[]
    while( $cols = $result->fetch_field() )
    {
        $colnames[] = $cols->name;
    }

    //this loops through and assigns all cols as multidimensional $results[colname][id]
    foreach ($colnames as $fields)
    {
        while ($row = $result->fetch_array(MYSQLI_ASSOC))
        {
           foreach($colnames as $field)
           {
               $results[$field][] = $row[$field];
           }
        }
    }

    //return to object
    return $results;

}
4

1 に答える 1

0

私が使用した関数は次のとおりです。

function tableAsMatrix($result)
{
    //declare $results as array for use in loop
    $results = array();

    //this gets all the col names and sets them as $colnames[]
    while( $cols = $result->fetch_field() )
    {
        $colnames[] = $cols->name;
    }

    //this loops through and assigns all cols as multidimensional $results[colname][id]
    foreach ($colnames as $fields)
    {
        while ($row = $result->fetch_array(MYSQLI_ASSOC))
        {
           foreach($colnames as $field)
           {
               $results[$field][] = $row[$field];
           }
        }
    }

    //return to object
    return $results;

}
于 2013-03-11T10:16:43.957 に答える