2012-04-18 11 views
7

Tôi muốn tạo một mảng các mảng kết hợp trong một vòng lặp while. Trong mỗi lần lặp của vòng lặp while tôi muốn thêm một phần tử mới vào mảng. Làm thế nào tôi có thể làm điều đó? Sau đó tôi muốn vượt qua mảng này trong foreach và in dữ liệu. Tôi có một phần của mã cho bây giờ nhưng rõ ràng là một cái gì đó là sai với điều đó.tạo mảng mảng kết hợp trong PHP

while($row2 = mysql_fetch_array($result)) 
{ 
    $myarray = array("id"=>$theid, "name"=>name($id), "text"=>$row2[text]); 
          } 
+0

Tôi có hai mảng và tôi muốn đặt chúng vào một biến. Tôi đang sử dụng dòng mã này $ finalarray = $ _SESSION ['SESS_ARRAY'] + $ myarray ;. Nhưng nó trở lại với tôi một lỗi nghiêm trọng. Bạn có thể giúp tôi được không? – anna

+0

Tôi đã giải quyết nó bằng cách sử dụng array_merge(). – anna

Trả lời

16

Để thêm phần tử ở cuối sử dụng mảng []
Ví dụ:

$myarray[] = array("id"=>$theid, "name"=>name($id), "text"=>$row2[text]); 
+0

Cảm ơn bạn! Tôi đã thực hiện thay đổi và tôi quên đặt lại. – anna

+0

Tôi có hai mảng và tôi muốn đặt chúng vào một biến. Tôi đang sử dụng dòng mã này $ finalarray = $ _SESSION ['SESS_ARRAY'] + $ myarray ;. Nhưng nó trở lại để mee một lỗi nghiêm trọng. Bạn có thể giúp tôi được không? – anna

+0

bạn không thể thêm hai mảng. sử dụng mã ở trên. đây là kết quả: $ finalarray = array(); $ finalarray [] = $ _SESSION ['SESS_ARRAY']; $ finalarray [] = $ myarray; – laltin

1

Rõ ràng truy cập của bạn để $row2 nhìn sai, vì vậy tôi cho rằng đây là đúng

$myarray = array(); 
while($row2 = mysql_fetch_array($result)) { 
    // append something to your array with square brackets [] 
    $myarray[] = array("id"=> $row2['id'], "name" => $row2['name'], "text"=>$row2['text']); 


    // or to maker this even shorter you could do 
    $myarray[] = $row2; // ... because it has the same array key names 
} 

Sau đó, sau khi bạn muốn đọc từ nó:

foreach($myarray as $val) { 
    echo $val['name'].' (ID: '.$val['id'].') wrote following text: '.$val['text']; 
} 
3

Nếu bạn đang cố gắng để thêm vào $ myarray trong mỗi lần lặp, làm điều đó như thế này:

$myarray[] = array("id"=>$theid, "name"=>name($id), "text"=>$row2[text]); 

hay như thế này:

array_push($myarray, array("id"=>$theid, "name"=>name($id), "text"=>$row2[text])); 
6

Rõ ràng, được rồi, đầu tiên nhặt nó ngoài do đó, có điều cần tìm hiểu:

while($row2 = mysql_fetch_array($result)) 
{ 
    ... 
} 

Phần nhìn này được rồi, hãy nhìn vào bên trong vòng lặp:

$myarray = array("id"=>$theid, "name"=>name($id), "text"=>$row2[text]); 

Có nhiều điểm. Có lẽ quan trọng nhất là, vì đó là bên trong một vòng lặp, bạn ghi đè lên $myarray trong mỗi lần lặp. Thay vào đó, bạn muốn thêm vào mảng. Hãy làm điều này:

$myarray = array(); # initialize the array first! 
while($row2 = mysql_fetch_array($result)) 
{ 
    $myarray[] = $row2; # add the row 
} 

Sau đó bạn có thể xuất nó để chứng minh rằng nó về cơ bản hoạt động:

var_dump($myarray); 

Điều đó cho thấy bạn là một mảng chứa tất cả các hàng. . Sau đó bạn chỉ cần thay đổi truy vấn cơ sở dữ liệu của bạn để nó chỉ trả về các lĩnh vực bạn quan tâm đến

Trong trường hợp bạn không thể làm điều đó với cơ sở dữ liệu, bạn có thể thao tác các mảng cũng như:

$myarray = array(); # initialize the array first! 
while($row2 = mysql_fetch_array($result)) 
{ 
    $myarray[] = array(
     "id" => $theid, 
     "name" => name($id), 
     "text" => $row2['text'] 
    ); 
} 
var_dump($myarray); 

Bây giờ kết quả sẽ giống như bạn muốn. Để xuất ra $myarray:

foreach ($myarray as $number => $row) 
{ 
    echo '<div>Number ', $number, ':<dl>'; 
    foreach ($row as $k => $v) 
    { 
     printf("<dt>%s</dt><dd>%s</dd>\n", $k, htmlspecialchars($v)); 
    } 
    echo '</dl></div>' 
}