You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP按单词长度将字符串转换为数组的实现方法咨询

按单词字符长度分组字符串为数组的实现步骤

你的现有代码已经完成了拆分字符串为单词数组的第一步,但还需要调整数组结构和遍历逻辑,具体步骤如下:

  1. 调整目标数组结构:把$tmpArray改成关联数组,用单词长度作为键,对应值为该长度的所有单词组成的数组,而非单纯存储长度值。
  2. 修正遍历逻辑:
    • 遍历每个单词时,先计算其字符长度,建议转为字符串类型(和示例的键格式一致)
    • 如果当前长度对应的键不存在于$tmpArray,先初始化这个键对应的空数组
    • 将当前单词追加到对应长度的数组中
  3. 修正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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 08:09:22