在for循环中更改元素

时间:2018-10-22 09:08:54

标签: php

在这里,当我不使用unset()函数和print_r($color)时,其结果将输出YELLOW。我不明白为什么它只输出YELLOW

$colors = array('red', 'blue', 'green', 'yellow');
foreach ($colors as $color)  {
    $color = strtoupper($color);
}
unset($color);
print_r($colors); // outputs: Array ( [0] => RED [1] => BLUE [2] => GREEN [3] => YELLOW )

3 个答案:

答案 0 :(得分:0)

这是因为您使用$color作为变量。您应该将$color定义为数组并将颜色值存储在其中。

<?php
$colors = array('red', 'blue', 'green', 'yellow');
 $colorArr = array();    
foreach ($colors as $color)  {
    if($color=='yellow'){
     continue;
    }
    $colorArr[] = strtoupper($color);        
}
//unset($color[3]);
echo '<pre>';
print_r($colorArr);
echo '</pre>';
?>

注意:放置条件并检查循环中是否有颜色,然后继续循环。

if($color=='yellow'){
 continue;// continue the loop without going to assign it in array
}

输出:

Array
(
    [0] => red
    [1] => blue
    [2] => green        
)

答案 1 :(得分:0)

您未设置$ color而不是条目$ colors [3]

如果需要取消设置黄色条目,则

unset($colors[3]);

否则,如果要取消设置所有数组内容,则

unset($colors);

答案 2 :(得分:0)

在foreach循环完成时,$ color包含最后一个元素Array,然后更改为大写,即它包含“ YELLOW”。如果使用print_r打印出它的内容,除非已经取消设置,否则它将输出“ YELLOW”。

您想做什么?如果要将数组的每个元素更改为大写,则需要使用以下foreach循环:

    foreach ($colors as &$color)  {
        $color = strtoupper($color);
    }
    print_r($colors);