如何用PHP explode()函数提取键值对中的数值组成数组?
提取PHP explode()结果中的数值数组
嘿,这事儿好办!针对你给出的字符串,我给你几个实用的方法,轻松把那些数值提取出来组成新数组:
方法一:foreach循环遍历处理(直观易懂)
这是最容易理解的方式,一步步处理每个键值对:
$line = 'dd=541;nn=874;cc=21;mm=95;tt=41'; $lineexp = explode(';', $line); $values = []; foreach ($lineexp as $item) { // 把每个键值对按=分割,取后面的数值部分转成整数 $parts = explode('=', $item); $values[] = (int)$parts[1]; } print_r($values);
执行后就能得到你想要的 [0 => 541, 1 => 874, 2 => 21, 3 => 95, 4 => 41],而且每个元素都是整数类型。
方法二:array_map简化写法(简洁高效)
如果喜欢更紧凑的代码,用array_map批量处理数组元素就行:
$line = 'dd=541;nn=874;cc=21;mm=95;tt=41'; $lineexp = explode(';', $line); $values = array_map(function($item) { return (int)explode('=', $item)[1]; }, $lineexp); print_r($values);
一行核心代码搞定,省去了foreach的循环结构,代码更简洁。
方法三:增加异常判断(健壮性更强)
如果担心输入字符串可能存在格式问题(比如某个元素没有=符号,或者后面不是数字),可以加个判断确保程序不会报错:
$line = 'dd=541;nn=874;cc=21;mm=95;tt=41'; $lineexp = explode(';', $line); $values = []; foreach ($lineexp as $item) { $parts = explode('=', $item); // 先检查分割后是否有数值部分,且是有效数字 if (isset($parts[1]) && is_numeric($parts[1])) { $values[] = (int)$parts[1]; } } print_r($values);
这种写法能应对一些不规范的输入,避免出现索引不存在或者类型转换错误的问题。
内容的提问来源于stack exchange,提问作者Asterisk Developer
相关产品推荐
相关产品推荐

