PHP按单词长度将字符串转换为数组的实现方法咨询
按单词字符长度分组字符串为数组的实现步骤
你的现有代码已经完成了拆分字符串为单词数组的第一步,但还需要调整数组结构和遍历逻辑,具体步骤如下:
- 调整目标数组结构:把
$tmpArray改成关联数组,用单词长度作为键,对应值为该长度的所有单词组成的数组,而非单纯存储长度值。 - 修正遍历逻辑:
- 遍历每个单词时,先计算其字符长度,建议转为字符串类型(和示例的键格式一致)
- 如果当前长度对应的键不存在于
$tmpArray,先初始化这个键对应的空数组 - 将当前单词追加到对应长度的数组中
- 修正return位置:你把
return放在了循环内部,会导致循环执行一次就直接返回结果,需要把它移到循环结束之后。
完整实现代码
function ordina3($string) { $array = explode(" ", $string); $tmpArray = []; foreach ($array as $word) { $length = (string)strlen($word); // 初始化对应长度的数组(如果不存在) if (!isset($tmpArray[$length])) { $tmpArray[$length] = []; } // 将单词加入对应长度的数组 $tmpArray[$length][] = $word; } return $tmpArray; } // 测试示例 $string = "hi my name is Joe"; $groupedArray = ordina3($string); print_r($groupedArray);
代码说明
- 使用
foreach遍历单词数组比for循环更简洁,无需手动维护索引计数 - 把长度转为字符串,确保数组键和示例中的字符串键(如"2")格式一致
- 用
isset()检查键是否存在,比in_array()更高效,因为直接操作关联数组的键而非遍历值
内容的提问来源于stack exchange,提问作者Drake
相关产品推荐
相关产品推荐

