php - php代码中的循环错误
问题描述
这是我的代码,它没有删除$arr[5]
元素,所以我试图#
从我的数组中删除以开头的字符串
这是代码
<?php
$arr = [
'#EXTM3U',
'#EXTINF:177,Paul Dateh & Oren Yoel - Be More',
'Be More.mp3',
'#EXTINF:291,Christopher Toy - Just Because',
'Just Because.mp3',
'#EXTINF:238,Magnetic North - Drift Away',
'Drift Away.mp3'
];
for ($i = 0; $i <= count($arr); $i++) {
if ($arr[$i]{0} == '#') {
echo $arr[$i] . "\n";
unset($arr[$i]);
}
}
print_r($arr);
?>
解决方案
原因:-您正在计算循环内的数组长度,并且每次unset()
从数组中获取任何值时,数组的长度都会减少并且值会count($array)
改变(只是减少)
因此,从逻辑上讲,您的第 5 和第 6 个元素永远不会通过if
条件(由于数组长度的减少,它们永远不会被循环遍历)
解决方案 1:-将 count 放在外面,它会正常工作:-
$count = count($arr);
//loop start from 0 so use < only otherwise, sometime you will get an undefined index error
for ($i = 0; $i < $count; $i++) {
if ($arr[$i]{0} == '#') {
//echo $arr[$i] . "\n";
unset($arr[$i]);
}
}
print_r($arr);
解决方案2:-这就是为什么我更foreach()
喜欢for()
循环
foreach($arr as $key=> $ar){
if ($ar[0] == '#') {
unset($arr[$key]);
}
}
print_r($arr);
推荐阅读
- javascript - React Native Component 在模态框内的其他组件下渲染
- azure-devops - Azure Pipelines - 从 python 脚本文件输出变量到管道变量
- python - 仅在使用 python 的目录中获取第一个文件夹的名称
- javascript - @CrossOrigin 不适用于 POST 方法
- android - 如何在撰写中设置高度 WRAP_CONTENT?
- reactjs - React.js 中的 Fetch 功能不起作用
- python - 在新包中导入 python 子包
- python - 如何改进 api 的 python 配置文件
- reactjs - undefined 不是对象(评估 '_useContext.register')
- python - Python:Pandas 列中的日期是期权到期日吗?