2011-07-03 128 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["some"]$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

$陣列將僅具有兩個屬性,somesome2。因此,你的foreach循環沒有任何意義。在foreach將循環兩次,第一次用這樣的:

$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

Emil有正確答案:D。我喜歡人們如此快速地在這裏大聲笑。