2011-07-03 10 views
0

なぜこの配列は機能しませんか?何が間違っていますか?私のforeachループの結果は、常に空であるか、ちょっと変わった数字と記号になります。では、私のforeachループには何が間違っていますか?このforeachループの問題点は何ですか?

$array = array(); 

while($row = mysqli_fetch_array($result)) { 
    if(!empty($row["some"])) { 
     $array["some"] = $row["some"]; 
     $array["some2"] = $row["some2"]; 
    } 

} 
foreach($array as $property=>$value) { 
echo '<p>'.$value["some"].' - '.$value["some2"].'</p>'; } 

答えて

1

および$array["some2"]は特定のアレイ要素である。 whileループの繰り返しごとに上書きします。

ないあなたが実際に達成しようとしているが、私は、これはあなたが望むものである可能性が何を考えてください:...ちょっと上

$array = array(); 

while($row = mysqli_fetch_array($result)) { 
    if(!empty($row["some"])) { 
     $array["some"][] = $row["some"]; 
     $array["some2"][] = $row["some2"]; 
    } 

} 
foreach($array["some"] as $property=>$value) { 
    echo '<p>'.$value.' - '.$array["some2"][$property].'</p>'; 
} 

または

$array = array(); 

while($row = mysqli_fetch_array($result)) { 
    if(!empty($row["some"])) { 
     $array[] = array('some' => $row["some"], 
         'some2' => $row["some2"]); 
    } 

} 
foreach($array as $property=>$value) { 
    echo '<p>'.$value['some'].' - '.$value['some2'].'</p>'; 
} 

または類似の依存何」究極的に達成しようとしています...

+0

あなたは正しいです!私は全くそれを見ていませんでした。正しいバージョンは$ array [] ["some"] = $ row ["some"]となります。それはありませんか? – phpheini

+0

上記の編集を参照してください –

0

これは奇妙な数字と記号を説明していませんが、各ループ反復で$array['some'] and $array['some2']を上書きしています。

代わりに、これを試してみてください。

while($row = mysqli_fetch_array($result)) { 
    if(!empty($row["some"])) { 
     $array[] = array("some"=>$row['some'], "some2"=>$row['some2']); 
    } 
} 
2

$配列は、2つのプロパティのみ、somesome2を持つことになります。したがって、foreachループは意味をなさない。このとのforeachがループ2回、最初の時間を:

$property = 'some'; 
$value = $row["some"]; 

、これで二:

$property = 'some2'; 
$value = $row["some2"]; 

あなたがこれを行うことによって、あなたの最初のループで$配列は多次元にする必要があります。

while($row = mysqli_fetch_array($result)) { 
    $new = array(); 
    if(!empty($row["some"])) { 
     $new["some"] = $row["some"]; 
     $new["some2"] = $row["some2"]; 
     $array[] = $new; 
    } 
} 

または短い:

while($row = mysqli_fetch_array($result)) { 
    if(!empty($row["some"])) { 
     $array[] = array('some' => $row["some"], 
         'some2' => $row["some2"]); 
    } 
} 
+0

ありがとうございます! – phpheini

0
$array[] = array('some' => $row["some"], 'some2' => $row["some2"]); 

しかし、これらの列だけを取得する方が良いでしょう。

0

エミールには正しい答えがあります。私は人々がここにこんなに速く投稿するのが大好きです。

関連する問題