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

PHP array_walk_recursive转小写失效及array_column用法咨询

PHP数组搜索问题解答

1. $lowArr为空的原因

  • array_walk_recursive()的返回值特性:该函数仅返回布尔值(成功返回true,失败返回false),不会返回处理后的数组。
  • 修改方式为引用传递:函数通过&$v的引用方式直接修改原数组$array的内容,你将其返回值赋值给$lowArr,得到的只是布尔值而非处理后的数组。后续用array_filter处理布尔值,自然无法得到预期结果,导致脚本无输出。

2. 用array_column重构数组后的实现代码

执行$array = array_column($array, 'key_name', 'key_code');后,数组结构变为**key_code为键、key_name为值**的一维数组。以下是两种实现方式:

方式一:遍历匹配(直观高效)

<?php
$array = [
    ['key_name' => 'Amazon Inc.', 'key_code' => '102923'],
    ['key_name' => 'Google inc, co io', 'key_code' =>'283923'],
    ['key_name' => 'IMSFT dcs', 'key_code' => '3384823'],
    ['key_name' => 'MSFTSurfshark io', 'key_code' =>'4473873']
];

// 重构数组:key_code作为键,key_name作为值
$array = array_column($array, 'key_name', 'key_code');
$search_text = 'mSfT';
$lowText = strtolower($search_text);

$targetCode = null;
foreach ($array as $code => $name) {
    // 统一转为小写并去除首尾空白后匹配
    if (strpos(strtolower(trim($name)), $lowText) !== false) {
        $targetCode = $code;
        break; // 找到第一个匹配项即停止遍历
    }
}

print_r($targetCode);
?>

方式二:数组函数组合(简洁)

<?php
$array = [
    ['key_name' => 'Amazon Inc.', 'key_code' => '102923'],
    ['key_name' => 'Google inc, co io', 'key_code' =>'283923'],
    ['key_name' => 'IMSFT dcs', 'key_code' => '3384823'],
    ['key_name' => 'MSFTSurfshark io', 'key_code' =>'4473873']
];

$array = array_column($array, 'key_name', 'key_code');
$search_text = 'mSfT';
$lowText = strtolower($search_text);

// 过滤出符合条件的项
$matchedItems = array_filter($array, function($name) use ($lowText) {
    return strpos(strtolower(trim($name)), $lowText) !== false;
});

// 提取第一个匹配的key_code(无匹配则返回null)
$targetCode = !empty($matchedItems) ? array_keys($matchedItems)[0] : null;

print_r($targetCode);
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:50:26