2010-06-15 53 views
83

Cần lưu trữ các giá trị từ vòng lặp foreach vào một mảng, cần trợ giúp làm điều đó. Mã bên dưới không hoạt động, chỉ lưu trữ giá trị cuối cùng, đã thử $ items. = ..., nhưng điều đó không thực hiện được thủ thuật, bất kỳ trợ giúp nào cũng sẽ được đánh giá cao.Làm thế nào để lưu trữ các giá trị từ vòng lặp foreach vào một mảng?

<?php 
foreach($group_membership as $i => $username) { 
$items = array($username); 
} 

print_r($items); 
?> 
+8

'. =' Nối văn bản. '[]' gắn thêm vào một mảng. – Skilldrick

Trả lời

192

Khai báo $items mảng bên ngoài vòng lặp và sử dụng $items[] để thêm các mục vào mảng:

$items = array(); 
foreach($group_membership as $username) { 
$items[] = $username; 
} 

print_r($items); 
+7

Ngoài ra, không trích xuất khóa ('$ i') nếu bạn không sử dụng nó. –

+0

Khai báo '$ items = array();' trước foreach thậm chí không cần thiết, phải không? php sẽ chỉ tạo một mảng trống –

14

Sử dụng

$items[] = $username; 
+6

Chỉ cần đảm bảo '$ items = array();' xuất hiện trước vòng lặp. – Skilldrick

+0

Bạn có thể giúp giải thích tại sao bạn phải khai báo $ items = array(); trước vòng lặp. Tôi đã làm một cái gì đó như thế này và không tuyên bố nó và nó vẫn hoạt động. Có tốt hơn để thêm nó hoặc là nó không cần thiết? – robk27

3
<?php 
$items = array(); 
$count = 0; 
foreach($group_membership as $i => $username) { 
$items[$count++] = $username; 
} 
print_r($items); 
?> 
+1

Không cần công cụ đếm $. Chỉ $ array [] = $ thing; – Crone

7

Hãy thử

$items = array_values ($group_membership); 
+1

Vâng, tôi giả định vòng lặp foreach đang làm nhiều hơn thế, nếu không thì đây là giải pháp tốt nhất. –

2

Bạn có thể cố gắng làm câu trả lời của tôi,

bạn là người viết:

<?php 
foreach($group_membership as $i => $username) { 
    $items = array($username); 
} 

print_r($items); 
?> 

Và trong trường hợp của bạn tôi sẽ làm điều này:

<?php 
$items = array(); 
foreach ($group_membership as $username) { // If you need the pointer (but I don't think) you have to add '$i => ' before $username 
    $items[] = $username; 
} ?> 

Như bạn thấy trong câu hỏi của bạn có vẻ như bạn cần một mảng tên người dùng trong một nhóm cụ thể :) Trong trường hợp này, tôi thích truy vấn sql tốt hơn với vòng lặp đơn giản;)

<?php 
$query = "SELECT `username` FROM group_membership AS gm LEFT JOIN users AS u ON gm.`idUser` = u.`idUser`"; 
$result = mysql_query($query); 
while ($record = mysql_fetch_array($result)) { \ 
    $items[] = $username; 
} 
?> 

while là nhanh hơn, nhưng ví dụ cuối cùng chỉ là kết quả của một quan sát. :)

1
$items=array(); 
$j=0; 

foreach($group_membership as $i => $username){ 
    $items[$j++]=$username; 
} 

Chỉ cần thử ở trên trong mã của bạn.

Các vấn đề liên quan