根据条件PHP在关联数组中插入数据

时间:2016-03-11 15:30:43

标签: php arrays push associative

我有两个数组:

true$sizes

$percentages看起来像这样:

$sizes

"sizes":{"0":{"size_id":5,"it":"50","us":"32"},"1":{"size_id":4,"it":"48","us":"30"}}, 是这样的:

$percentages

我想在$ sizes数组中插入百分比数据,基于$ size的值= = $ size中的“size_id”并以此结尾:

"percentages":[{"5":"70"},{"4":"30"}]

我尝试了一些嵌套循环,但是我没有找到正确的方法,并且array_push_assoc返回“调用未定义的bla bla错误”。

1 个答案:

答案 0 :(得分:1)

假设您先在这里使用json_decode创建了真正的数组:

$sizes = json_decode('{"0":{"size_id":5,"it":"50","us":"32"},"1":{"size_id":4,"it":"48","us":"30"}}', true);
$percentages = json_decode('[{"5":"70"},{"4":"30"}]', true);

您可以非常简单地构建$final数组。

首先循环大小,使用$final作为数组键将它们添加到size_id。这将使下一步更容易。

foreach($sizes AS $size) {
    $final[$size['size_id']] = $size;
}

现在循环显示百分比,并使用键找到正确的$final条目,并添加百分比元素。

foreach($percentages AS $percentage) {
    $final[key($percentage)]['percentage'] = current($percentage);
}

你已经完成了!如果您不希望$final数组仍由size_id键入,则可以删除该数组:

$final = array_values($final);

当然,如果您希望输出为json:

$finalJson = json_encode($final);

工作示例:https://3v4l.org/LR8Tv