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

PHP实现两个数组筛选:含字母u的元素归入第一个数组其余放第二个

原有思路问题分析
  • 第一种对应位置交换思路:代码存在多处逻辑错误,一是substr第一个参数传入了数组而非当前遍历的字符串元素;二是for循环条件写为$i < $tableau1[$position],实际应该是小于当前元素的字符串长度;三是仅判断了$tab1的元素,没有处理$tab2本身的元素是否含u,且仅在两个数组长度完全一致时才能运行,适用性极差。
  • 第二种遍历移动思路:同样存在substr传参错误的问题,且仅将$tab1不符合要求的元素推入$tab2,没有删除$tab1中对应元素,也没有处理$tab2原有元素中含u的情况,逻辑不完整。
正确实现代码

直接合并两个数组的所有元素统一分类,逻辑最简单不易出错,完整可运行代码如下:

<?php
$tab1 = ["echelle", "trio", "pamplemousse", "legumes"];
$tab2 = ["lama", "geranium", "pendule", "elephant"];

// 合并两个数组所有元素
$allItems = array_merge($tab1, $tab2);
$newTab1 = [];
$newTab2 = [];

foreach ($allItems as $word) {
    // 判断是否包含字母u,需不区分大小写的话可以先转成小写再判断
    if (str_contains($word, 'u')) {
        $newTab1[] = $word;
    } else {
        $newTab2[] = $word;
    }
}

// 覆盖原数组
$tab1 = $newTab1;
$tab2 = $newTab2;

// 验证输出
var_dump($tab1);
var_dump($tab2);
?>

如果使用的是PHP8以下版本,将判断含u的代码替换为兼容写法即可:

if (strpos($word, 'u') !== false) {

运行后$tab1仅保留所有含u的单词:pamplemousse、legumes、geranium、pendule,其余不含u的单词全部归入$tab2,符合需求。

内容的提问来源于stack exchange,提问作者SamiKode

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:36:05