PHP5.5升级至7:如何将list()替换为str_split()处理字符串赋值?
解决PHP7中替换list()解包逗号分隔字符串的问题
嘿,我来帮你搞定这个升级后的小问题~首先先澄清一个小误区:你原来用explode(",", $quantity)得到的是数组,PHP7+里list()其实依然可以正常解包数组哦!不过既然你明确想改用str_split()来实现,那我们得先处理掉字符串里的逗号,因为str_split()是按单个字符拆分的,直接用会把逗号也拆进去。
具体实现步骤
- 第一步:先移除字符串中的逗号,用
str_replace()把所有逗号替换为空字符串 - 第二步:用
str_split()把处理后的字符串拆分成单个字符的数组 - 第三步:用
list()或者直接数组索引的方式给目标变量赋值
代码示例
原来的代码(PHP5.5可用,PHP7+其实也能正常运行)
$quantity = "2,5,3"; list($item[$key + 1]["red"], $item[$key + 1]["green"], $item[$key + 1]["blue"]) = explode(",", $quantity);
改用str_split()的版本
$quantity = "2,5,3"; // 移除字符串中的逗号 $clean_quantity = str_replace(',', '', $quantity); // 拆分每个字符为数组 $color_values = str_split($clean_quantity); // 用list()赋值 list($item[$key + 1]["red"], $item[$key + 1]["green"], $item[$key + 1]["blue"]) = $color_values;
或者你也可以不用list(),直接通过数组索引赋值,可读性可能更强:
$item[$key + 1]["red"] = $color_values[0]; $item[$key + 1]["green"] = $color_values[1]; $item[$key + 1]["blue"] = $color_values[2];
注意事项
如果你的数字是多位数(比如"10,25,30"),那str_split()就不适用了——它会把"10"拆成"1"和"0",这种场景下还是得用explode(),毕竟它是按分隔符拆分,更适合处理逗号分隔的多位数列表。
内容的提问来源于stack exchange,提问作者rockyraw
相关产品推荐
相关产品推荐

