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

如何在PHP中将数组中指定字符串值整体替换为对应数字?

解决方案:用映射数组实现精确替换

这问题其实很好解决,核心思路就是先建立一个字符串-数值的映射表,然后通过遍历原数组完成精确替换——这样就能确保是整体匹配,完全不会出现部分重复词干扰的情况。

步骤1:定义映射关系和原数组

首先我们把你给出的对应关系做成一个数组,键是完整的目标字符串(保证精确匹配),值是对应的数字:

// 建立精确匹配的映射数组
$stringToNumber = [
    'deloc' => 1,
    'foarte puţin' => 2,
    'mediu' => 3,
    'mult' => 4,
    'foarte mult' => 5
];

// 你的原始数组
$originalArray = [
    "tensionat" => "mediu",
    "trist" => "mult",
    "melancolic" => "deloc",
    "fara_speranta" => "foarte puțin",
    "nefolositor" => "deloc",
    "ingrijorat" => "foarte mult",
    "amarat" => "deloc",
    "anxios" => "mediu"
];

步骤2:执行替换(两种可选方式)

方式一:用array_map快速处理(简洁高效)

array_map可以快速遍历数组并对每个值做处理,配合use关键字引入映射数组,再用空合并运算符??处理可能的未匹配情况:

$convertedArray = array_map(function($value) use ($stringToNumber) {
    // 存在映射则替换为数字,否则保留原值(也可以改成抛出错误等逻辑)
    return $stringToNumber[$value] ?? $value;
}, $originalArray);

方式二:用foreach循环(直观易读,适合新手)

如果觉得闭包不太好理解,用foreach逐个处理更直观:

$convertedArray = [];
foreach ($originalArray as $key => $value) {
    // 同样用空合并运算符处理未匹配的情况
    $convertedArray[$key] = $stringToNumber[$value] ?? $value;
}

为什么能保证整体匹配?

因为我们是直接用原数组的完整字符串值去映射数组里找对应的键,只有当两个字符串完全相等时才会触发替换,完全不会出现比如mediu被误匹配成其他包含该词的字符串的情况,完美符合你的需求。

测试输出

执行完替换后,用print_r($convertedArray)可以得到结果:

Array
(
    [tensionat] => 3
    [trist] => 4
    [melancolic] => 1
    [fara_speranta] => 2
    [nefolositor] => 1
    [ingrijorat] => 5
    [amarat] => 1
    [anxios] => 3
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 18:52:59