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