我想像下面那样对这两个数组进行marge处理。而且花了这么长时间。。。你能帮帮我吗?
result=
array {
[0]=>
array{
["product_id"]=>"418"
["qty_ordered"]=>"2.0000"
}
[1]=>
array{
["product_id"]=>"512"
["qty_ordered"]=>"3.0000"
}
[2]=>
array{
["product_id"]=>"588"
["qty_ordered"]=>"1.0000"
}
}
result1=
array {
[0]=>
array {
["id"]=>"2"
["period"]=>"2015-12-08"
["store_id"]=>"0"
["product_id"]=>"418"
["rating_pos"]=>"0"
["out_of_stock"]=>"1"
}
[1]=>
array {
["id"]=>"4"
["period"]=>"2015-11-08"
["store_id"]=>"0"
["product_id"]=>"588"
["rating_pos"]=>"0"
["out_of_stock"]=>"0"
}
}
那些数组是这样的(从下一个到上一个添加"out_of_stock")有很多数组需要marge,所以我想做一个foreach语句,但我已经被卡住了这么长时间。。。。
公共密钥是"product_id",如果$result1 中不存在公共product_id,则"out_of_stock"将为0
result2=
array {
[0]=>
array{
["product_id"]=>"418"
["qty_ordered"]=>"2.0000"
["out_of_stock"]=>"1"
}
[1]=>
array{
["product_id"]=>"512"
["qty_ordered"]=>"3.0000"
["out_of_stock"]=>"0"
}
[2]=>
array{
["product_id"]=>"588"
["qty_ordered"]=>"1.0000"
["out_of_stock"]=>"0"
}
}
我创造了这样的东西,但我相信它会很长,一点也不好。。。
$rowArray=array();
foreach($result as $rowArray){
foreach ($rowArray as $column => $value) {
if($colum = 'product_id'){
.....
我真的很感激你的帮助。谢谢
我认为密钥是固定的,所以您不需要循环$rowArray
foreach($result as &$val1){
$val1['out_of_stock'] = 0;//make it to be 0 as default
foreach($result1 as $val2){
if($val1['product_id'] == $val2['product_id']){
$val1['out_of_stock'] = $val2['out_of_stock'];
break;
}
}
}
您可以尝试以下操作:
$result = array_reduce($result, function ($return, $item) {
$return[$item['product_id']] = $item;
return $return;
}, array());
$result1 = array_reduce($result1, function ($return, $item) {
$return[$item['product_id']] = $item;
return $return;
}, array());
$result = array_replace_recursive($result, $result1);
$result = array_map(function($item) {
$item['out_of_stock'] = isset($item['out_of_stock']) ? $item['out_of_stock'] : 0;
return $item;
}, $result);
echo '<pre>';
var_dump($result);
echo '</pre>';