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

时间:2014-06-11 03:53:47

标签: php arrays set

我在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"
        }
    ]
}

我需要做的是获取 distancia值(指定:最小值)并将第一个数组设置为新的,具体取决于它具有相同的idespecialidad

喜欢这样(已编码):

[
    {
        "idespecialidad": "001",
        "especialidad": "ALBAÑIL",
        "cantidad": "3",
        "codpais": "PE",
        "distancia": "2.3"
    },
    {
        "idespecialidad": "006",
        "especialidad": "CHEF",
        "cantidad": "1",
        "codpais": "PE",
        "distancia": "6.9"
    },
    {
        "idespecialidad": "003",
        "especialidad": "ELECTRICISTA",
        "cantidad": "2",
        "codpais": "PE",
        "distancia": "7.5"
    },
    {
        "idespecialidad": "009",
        "especialidad": "PROGRAMADOR",
        "cantidad": "1",
        "codpais": "PE",
        "distancia": "7.3"
    }
]

1 个答案:

答案 0 :(得分:1)

让$ 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;
}