PHP提取模型名称函数implode拼接结果为空问题求助
问题根源
- 循环内的
$name每次都会被新的解析结果覆盖,始终是单个字符串变量,不是存储所有模型名的数组,implode()传入非数组参数自然无法得到预期的拼接结果 - 循环终止条件
$e <= $nr2存在数组越界风险,PHP数组下标从0开始,最大有效下标为count($model)-1
修复方案
- 循环前初始化空数组存储所有有效模型名
- 循环内每次得到非空的模型名就追加到数组中
- 修正循环边界避免越界
- 最终对存储所有模型名的数组执行
implode()操作
修复后完整代码
function model($model){ $model = explode('"Models"', $model); $model = $model[1]; $model = explode('</div></div>', $model); $model = $model[0]; $model = explode('bycjqw', $model); $nr2 = count($model); // 初始化存储所有模型名的数组 $modelNames = []; // 修正循环边界,避免数组越界 for ($e = 1; $e < $nr2; $e++) { $name = explode('<', $model[$e]); $name = $name[0]; $name = str_replace('-0 gtoSow">', '', $name); if($name != ''){ echo '1:'.$name.'<br>'; // 有效名称追加到数组 $modelNames[] = $name; } } $models = implode(',', $modelNames); echo '2:'.$models; return $models; }
内容的提问来源于stack exchange,提问作者Alejandro Muñoz
相关产品推荐
相关产品推荐

