如何将foreach循环中的值存储到数组中?


115

需要将foreach循环中的值存储到数组中,需要帮助。

下面的代码不起作用,仅存储上次尝试的值,$items .= ...,但这也不起作用,将不胜感激。

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

print_r($items);

12
.=追加文字。[]追加到数组上。
Skilldrick 2010年

到目前为止,Skilldrick用一根以上的衬管将其钉牢,无需再走了。
user1946891

Answers:


255

$items在循环外声明数组,并用于$items[]向数组添加项目:

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

print_r($items);

7
另外,$i如果您不打算使用它,请不要提取它。
Matteo Riva

2
$items = array();不需要在foreach之前声明,对吗?php只会创建一个空数组
BassMHL '17

如果某些$ username为null会怎样?我们有类似的情况,记录是从API传来的,某种程度上,我们最终会在数组中得到一些空记录。
pixelwiz


7

尝试

$items = array_values ( $group_membership );

1
好吧,我认为foreach循环的作用还不止于此,否则这是最佳解决方案。
Matteo Riva

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

3
不需要$ count的东西。只是$ array [] = $ thing;

我将推迟对此答案的投票,尽管:1.这是仅代码的答案,2.教导开发人员不必要的/不好的做法...因为这是做有纪律的事情并使Stackoverflow成为更好资源的好机会。
mickmackusa

我的问题是我的数组仅返回被推入数组的最后一个元素。根据您的建议使用计数解决了我的问题。
Jass Preet

2

你可以试着回答我

您写道:

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

print_r($items);
?>

在您的情况下,我会这样做:

<?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;
} ?>

正如您在问题中显示的那样,您似乎需要特定组中的用户名数组:)在这种情况下,我更喜欢带有简单while循环的良好sql查询;)

<?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速度更快,但最后一个示例只是观察的结果。:)


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

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

只需在您的代码中尝试以上内容即可。


任何开发人员都不应使用此仅代码答案。计数器和增量根本没有必要。
mickmackusa

0

只是为了节省您太多的错字:

foreach($group_membership as $username){
        $username->items = array(additional array to add);
    }
    print_r($group_membership);

-1

这个问题似乎已经很老了,但是如果您通过它,可以使用PHP内置函数array_push()通过以下示例将数据推入数组中。

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

进行迭代的函数调用效率很低。方括号推动语法(建议早于8年)将更加有效。此答案不应用于将单个元素推入数组。(并且声明$i无效)
mickmackusa
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.