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

PHP:判断数组是否包含指定字符并返回对应键值对字符串

解决方法

这里有几种实用的实现方式,你可以根据自己的PHP版本和实际需求来选择:

方法一:遍历数组直接匹配(兼容所有PHP版本)

这是最直观的思路——逐个检查$my_array里的元素,判断是否以$compare[0] + 等号开头,找到匹配项就返回:

$compare = array("Testing", "Bar");
$my_array = array( "Foo=7654", "Bar=4.4829", "Testing=123" );
$target = $compare[0];
$result = null;

foreach ($my_array as $item) {
    // 严格匹配开头的键名,避免类似"XTesting=xxx"的误匹配
    if (strpos($item, $target . '=') === 0) {
        $result = $item;
        break; // 找到第一个匹配项就停止遍历,提升效率
    }
}

// 输出结果:Testing=123
echo $result;

如果需要返回所有匹配的元素(比如数组里有多个Testing=xxx),去掉break,把$result改成数组来收集即可。

方法二:转成关联数组后反向拼接(PHP 5.3+)

先把$my_array转换成键值对形式的关联数组,之后直接通过键名判断是否存在,再拼接回原格式的字符串:

$compare = array("Testing", "Bar");
$my_array = array( "Foo=7654", "Bar=4.4829", "Testing=123" );
$target = $compare[0];
$result = null;

// 将原数组转为关联数组,处理值里包含等号的情况(比如"Test=abc=123")
$assoc_array = array_reduce($my_array, function($carry, $item) {
    list($key, $value) = explode('=', $item, 2); // 只分割第一个等号
    $carry[$key] = $value;
    return $carry;
}, []);

// 检查键是否存在,存在则拼接回原格式
if (isset($assoc_array[$target])) {
    $result = $target . '=' . $assoc_array[$target];
}

// 输出结果:Testing=123
echo $result;

这种方法的优势是,如果你之后还需要用到其他键的值,这个关联数组可以重复使用,灵活性更高。

方法三:用str_starts_with简化判断(PHP 8.0+)

如果你的PHP版本是8.0及以上,可以用更简洁的str_starts_with函数来判断元素开头,代码可读性更好:

$compare = array("Testing", "Bar");
$my_array = array( "Foo=7654", "Bar=4.4829", "Testing=123" );
$target = $compare[0];
$result = null;

foreach ($my_array as $item) {
    if (str_starts_with($item, $target . '=')) {
        $result = $item;
        break;
    }
}

echo $result;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:12:20