我正在处理一个小型PHP项目,我想将我的 total_ca 从我的第二个数组复制到第一个中,其中月键和年份相同第二个数组的值。
请先谢谢
Array
(
[1] => Array
(
[current] => Array
(
[year] => 2019
[month] => 1
)
[past] => Array
(
[year] => 2018
[month] => 1
)
)
[2] => Array
(
[current] => Array
(
[year] => 2019
[month] => 2
)
[past] => Array
(
[year] => 2018
[month] => 2
)
)
)
我的第二个数组
Array
(
[0] => Array
(
[year] => 2018
[month] => 1
[total_ca] => 1200.000000
)
[1] => Array
(
[year] => 2019
[month] => 1
[total_ca] => 6000.000000
)
)
您可以在这里找到我想要得到的结果 提前非常感谢
[1] => Array
(
[current] => Array
(
[year] => 2019
[month] => 1
[total_ca] => 6000.000000
)
[past] => Array
(
[year] => 2018
[month] => 1
[total_ca] => 1200.000000
)
)
答案 0 :(得分:0)
您可以使用几个嵌套的foreach
循环来完成此操作。
foreach($arr1 as &$records) { //Loop through top level array
foreach($records as &$record) { //Loop through subarrays (current & past for each top level array)
foreach($arr2 as $ar2) { //Loop through 2nd array
//if values in 2nd array match those in subarray, add `total_ca` to 2nd array.
if($ar2['year'] == $record['year'] && $ar2['month'] == $record['month']) {
$record['total_ca'] = $ar2['total_ca'];
}
}
}
}
我也使用&
符号,这称为reference;它基本上可以让您更改要遍历的数组,而无需创建新数组。
结果:
Array
(
[0] => Array
(
[current] => Array
(
[year] => 2019
[month] => 1
)
[past] => Array
(
[year] => 2018
[month] => 1
[total_ca] => 1200
)
)
[1] => Array
(
[current] => Array
(
[year] => 2019
[month] => 2
)
[past] => Array
(
[year] => 2018
[month] => 2
)
)
)
答案 1 :(得分:0)
我已修复它,这是解决方案
$arr1 = array();
$arr2 = $this->thirdparties->chart(6)->result_array();
for($i = 0; $i <= 11; $i++){
$arr1[$i][date('Y')] = array('total_ca' => null, 'month' => $i + 1);
$arr1[$i][date('Y') - 1] = array('total_ca' => null,'month' => $i + 1);
if(isset($arr2[$i]['month'])){
if($arr2[$i]['year'] == date('Y')){
$arr1[$i][date('Y')]['total_ca'] = $arr2[$i]['total_ca'];
}
}
if(isset($arr2[$i]['month'])){
if($arr2[$i]['year'] == date('Y') - 1){
$arr1[$i][date('Y') - 1]['total_ca'] = $arr2[$i]['total_ca'];
}
}
}