php-使用条件从另一个数组中设置值

php-使用条件从另一个数组中设置值,php,arrays,set,Php,Arrays,Set,我在php中有以下数组: [ { "idespecialidad": "001", "especialidad": "ALBAÑIL", "cantidad": "3", "codpais": "PE" }, { "idespecialidad": "006", "especialidad": "CHEF", "cantidad": "1", "

我在php中有以下数组:

[
    {
        "idespecialidad": "001",
        "especialidad": "ALBAÑIL",
        "cantidad": "3",
        "codpais": "PE"
    },
    {
        "idespecialidad": "006",
        "especialidad": "CHEF",
        "cantidad": "1",
        "codpais": "PE"
    },
    {
        "idespecialidad": "003",
        "especialidad": "ELECTRICISTA",
        "cantidad": "2",
        "codpais": "PE"
    },
    {
        "idespecialidad": "009",
        "especialidad": "PROGRAMADOR",
        "cantidad": "1",
        "codpais": "PE"
    }
]
然后是另一个数组:

{
    "001": [
        {
            "idespecialidad": "001",
            "distancia": "2.3"
        },
        {
            "idespecialidad": "001",
            "distancia": "3.4"
        },
        {
            "idespecialidad": "001",
            "distancia": "10.0"
        }
    ],
    "006": [
        {
            "idespecialidad": "006",
            "distancia": "6.9"
        }
    ],
    "003": [
        {
            "idespecialidad": "003",
            "distancia": "8.3"
        },
        {
            "idespecialidad": "003",
            "distancia": "7.5"
        }
    ],
    "009": [
        {
            "idespecialidad": "009",
            "distancia": "7.3"
        }
    ]
}
我需要做的是获取
distance
值(指定:最小值),并将其作为新的键设置到第一个数组中,具体取决于它是否具有相同的
idespecialidad

像这样(哈罗德):


让$arr1作为第一个阵列,$arr2作为第二个阵列

<?php

foreach ($arr1 as $i => $x) {
    $k = $x['idespecialidad'];
    $min = findmin($arr2, $k);
    $arr1[$i]['distancia'] = $min;
}

function findmin($data, $k)
{
    $min = $data[$k][0]['distancia'];
    for ($i = 1; $i < count($data[$k]); $i++) {
         if ($data[$k][$i]['distancia'] < $min) {
             $min = $data[$k][$i]['distancia'];
         }
    }
    return $min;
}

太棒了!!非常感谢你。
<?php

foreach ($arr1 as $i => $x) {
    $k = $x['idespecialidad'];
    $min = findmin($arr2, $k);
    $arr1[$i]['distancia'] = $min;
}

function findmin($data, $k)
{
    $min = $data[$k][0]['distancia'];
    for ($i = 1; $i < count($data[$k]); $i++) {
         if ($data[$k][$i]['distancia'] < $min) {
             $min = $data[$k][$i]['distancia'];
         }
    }
    return $min;
}