0

私はphpにかなり慣れていないということから始めましょう。多次元配列を作成しようとしていますが、結果を見ると奇妙な結果に遭遇します。使用している構文が正しくないように感じますが、オンラインのどこでもそれを確認できません。だから私はここで質問を投げかけています。

これが私がやろうとしていることの要点です:

// Given: $row["foo"] == "Hello" && $row["bar"] == 1

while($row = mysqli_fetch_array($query_result, MYSQLI_ASSOC)){
    $multiArray[$i] = $row["foo"];
    $multiArray[$i]["lorem"] = $row["bar"];
    $i++;   
}

印刷に行くと、次の$multiArray[$i]ようになります1ello

私が言ったように、エラーは私がこの多次元配列を割り当てる方法の私の構文にあると信じています。上記のphpマッドネス(私が推測できるもの)と同様の方法を見つけるのを誰かが手伝ってくれませんか?

前もって感謝します!

4

3 に答える 3

2

同じ配列値でデータ型を組み合わせることはできません。

$multiArray[$i]値の型(文字列、整数、または配列)のみを持つことができますが、コードでは、配列と文字列を同時に使用する必要があります。

考えられる解決策は次のとおりです(ただし、ロジックによって異なります):

while($row = mysqli_fetch_array($query_result, MYSQLI_ASSOC)){
    $multiArray[$i]["lorem_string"] = $row["foo"];
    $multiArray[$i]["lorem"] = $row["bar"];
    $i++;   
}
于 2012-10-23T19:31:39.677 に答える
0

最初に割り当てるのは例の値を持つ文字列になる$multiArray[$i] = $row["foo"];ため、次に文字列のインデックスに。を割り当てます。に評価されるため、出力は次のようになります。$multiArray[$i]Hellolorem$multiArray[$i]["lorem"] = $row["bar"];lorem01ello

編集:新しいバージョンのPHPでも警告が表示されます。

于 2012-10-23T19:32:06.980 に答える
0

基本的に、最初に$ multiArray [$ i]に文字列「hello」を割り当て、次に次の行で配列を割り当てようとします。

代わりに、最初の割り当てを配列にする必要があります。配列には、文字列、int、またはそれ以上の配列などを含めることができます。

また、この場合に明示的に行うことも、何が起こっているのかを理解するのに役立ちます。

例えば:

$i = 0; // explicit initialization of $i
while($row = mysqli_fetch_array($query_result, MYSQLI_ASSOC)){
    $multiArray[$i] = array(); // explicit initialization of array
    $multiArray[$i]["foo"] = $row["foo"];
    $multiArray[$i]["lorem"] = $row["bar"];
    $i++;   
}

次に、「こんにちは」が必要echo $multiArray[$i]["foo"];な場合、および1が必要な場合echo $multiArray[$i]["lorem"];

于 2012-10-23T19:38:01.930 に答える