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
相关产品推荐
相关产品推荐

