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

PHP根据输入值求和匹配数组对应名称的实现方法

PHP数值求和匹配对应名称功能实现

基础示例

输入代码如下:

$input = '500';
$array1 = array("200" => 'jhon',"300" => 'puppy',"50" => 'liza',"150" => 'rehana',"400" => 'samra',"100" => 'bolda',);

预期输出格式参考:

jhon,puppy and bolda,rehana

实现逻辑要求

  • 提前建好数值和对应名称的映射数组,初始化空数组$names用来存储匹配到的名称
  • 用foreach循环遍历映射数组,每遍历到一项就从当前剩余的输入值里扣减该项对应的数值,直到输入值被扣到0就终止遍历
  • 所有参与扣减、凑出输入值总和的项,对应的名称都要放进$names数组
  • 最终输出判断规则:
    • 如果$names不为空,调用implode函数用and做分隔符把名称拼接成字符串输出
    • 如果$names为空,直接输出No match found表示没有找到匹配的项

参考实现代码

<?php
// 初始化输入值和数值-名称映射数组
$input = '500';
$remain = intval($input);
$numNameMap = array(
    "200" => 'jhon',
    "300" => 'puppy',
    "50" => 'liza',
    "150" => 'rehana',
    "400" => 'samra',
    "100" => 'bolda',
);
$matchedNames = [];

// 遍历数组完成数值扣减匹配
foreach ($numNameMap as $value => $name) {
    if ($remain <= 0) {
        break;
    }
    $value = intval($value);
    if ($value <= $remain) {
        $remain -= $value;
        $matchedNames[] = $name;
    }
}

// 按规则输出结果
if (!empty($matchedNames)) {
    echo implode(' and ', $matchedNames);
} else {
    echo "No match found";
}

说明:按照给定的顺序遍历逻辑,上述示例输入运行后会输出jhon and puppy,如果需要得到参考输出里带逗号分组的格式,调整遍历顺序或者增加多组合匹配规则即可,核心扣减逻辑完全符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:45:39