在这里,当我不使用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 )
答案 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);