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

PHP如何判断多维数组中是否包含指定子字符串

PHP多维数组中搜索子字符串的解决方案

你的问题核心是子字符串匹配,而array_search只能做精确全匹配,所以无法找到包含'Jack'的字段。下面是几种可行的实现方式:

方法一:使用array_filter + strpos

通过array_column提取所有Description字段,再用array_filter过滤出包含目标子串的元素,最后判断过滤结果是否非空:

$descriptions = array_column($my_array, 'Description');
$hasJack = !empty(array_filter($descriptions, function($text) {
    // strpos返回子串起始位置,不存在则返回false,注意用!==判断
    return strpos($text, 'Jack') !== false;
}));

echo $hasJack ? 'True' : 'False';

方法二:直接循环遍历(效率更高)

遍历多维数组的每个子元素,一旦找到包含目标子串的项就立即终止循环,避免不必要的遍历:

$hasJack = false;
foreach ($my_array as $item) {
    if (strpos($item['Description'], 'Jack') !== false) {
        $hasJack = true;
        break;
    }
}

echo $hasJack ? 'True' : 'False';

方法三:使用array_reduce(函数式风格)

通过array_reduce迭代数组,只要有一个元素满足条件就返回true:

$hasJack = array_reduce($my_array, function($found, $item) {
    return $found || (strpos($item['Description'], 'Jack') !== false);
}, false);

echo $hasJack ? 'True' : 'False';

注意点

  • strpos区分大小写,如果需要不区分大小写的搜索,可以替换成stripos。
  • 必须用!== false判断结果,因为如果子串出现在字符串起始位置(索引0),strpos会返回0,直接用!strpos(...)会误判为false。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:10:49