PHP中如何将含逗号分隔字符串的索引数组转为数字索引数组
问题解决:PHP数组格式转换
原数组与目标格式
原数组结构:
$digit = [ 'numbers' => [ 0 => '1,2,3', ] ];
需要转换为:
[ 'numbers' => [ 0 => 1, 1 => 2, 2 => 3, ] ];
你的方法问题分析
- 方法1:循环
$digit[$i]是错误的,原数组是关联数组,没有数字索引0,循环根本没执行。就算拿到目标字符串,也没有做分割处理,直接赋值整个字符串,自然得不到想要的结果。 - 方法2:只是原样复制原数组的元素,完全没处理
'1,2,3'这个逗号分隔的字符串,结果当然和原数组一致。
正确解法
核心步骤是:取出字符串 → 分割为数组 → 转换为整数类型。
分步实现代码
// 原数组 $digit = [ 'numbers' => [ 0 => '1,2,3', ] ]; $newDigitsArray = []; // 取出逗号分隔的数字字符串 $numberStr = $digit['numbers'][0]; // 按逗号分割成字符串数组 $strNumbers = explode(',', $numberStr); // 将每个字符串元素转为整数 $intNumbers = array_map('intval', $strNumbers); // 赋值到目标数组 $newDigitsArray['numbers'] = $intNumbers; \Log::info($newDigitsArray);
简洁写法
如果不需要分步调试,可以一行完成转换:
$newDigitsArray = [ 'numbers' => array_map('intval', explode(',', $digit['numbers'][0])) ];
内容的提问来源于stack exchange,提问作者M G
相关产品推荐
相关产品推荐

