php - 在 for 循环中更改元素
问题描述
在这里,当我不使用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 )
解决方案
在 foreach 循环完成时,$color 包含最后一个元素 Array ,然后更改为大写,即它包含“YELLOW”。如果您使用 print_r 打印出它的内容,它将输出“YELLOW”,除非您已经取消设置它。
你想让我做什么?如果要将数组的每个元素更改为大写,则需要使用以下 foreach 循环:
foreach ($colors as &$color) {
$color = strtoupper($color);
}
print_r($colors);
推荐阅读
- swift - 此 libswiftCore.dylib 副本需要 12.2.0 之前的操作系统版本 - react-native-whatsapp-stickers
- jquery - 如何在单击时将两个不同的活动类添加到两个不同的选项卡(它在图像上的外观)
- laravel - 如何使用 laravel Eloquent 关系获得社区关注者
- elasticsearch - ElasticSearch:按术语查找项目,如果不存在则忽略它
- java - 添加谷歌登录firebaseui时应用程序崩溃
- .net - 这是一个关于 Cosmos Db 中的分区键的好策略吗?
- javascript - 使用正则表达式替换引号、句点、正斜杠和所有字母
- c# - '必须声明标量变量“@SKU”。'
- angular - 无法自定义 ng-image-slider 大小
- python - 在 ubuntu16.04 上编译的 Python 代码在使用 pyodbc 模块与 db 交互并给出 sql 异常时不起作用