我有以下数组
$priceYear = Array (
[AZ] => Array
(
[1] => 2020
[2] => 2020
)
[BY] => Array
(
[0] => 2020
[1] => 2020
)
[CX] => Array
(
[1] => 2020
[2] => 2020
[3] => 2020
)
[DW] => Array
(
[106] => 2019
[107] => 2019
[108] => 2019
)
)
还有另一个与此
$array = Array (
[0] => Array
(
[YEAR] => 2018
[VALUE_AMDON] => 55
)
[1] => Array
(
[YEAR] => 2019
[VALUE_AMDON] => 57
)
[2] => Array
(
[YEAR] => 2020
[VALUE_AMDON] => 59
)
)
而且我想用$ priceYear == YEAR的值替换为VALUE_AMDON
所以输出应该像这样
$priceYear = Array (
[AZ] => Array
(
[1] => 59
[2] => 59
)
[BY] => Array
(
[0] => 59
[1] => 59
)
[CX] => Array
(
[1] => 59
[2] => 59
[3] => 59
)
[DW] => Array
(
[106] => 57
[107] => 57
[108] => 57
)
)
我就是这样
function replace($var){
global $array;
for ($u=0; $u <sizeof($array) ; $u++) {
if ($var == $array[$u]['YEAR']){
return $array[$u]['VALUE_AMDON'];
}else{
return $var;
}
}
}
foreach ($priceYear as $key => $value) {
$priceYear[$key] = array_map('replace', $value);
}
但是不幸的是它不起作用,它正在返回初始数组
如果有人可以帮助我,看起来错误非常愚蠢,但我没有看到它:c
因为数组的键之间没有直接链接,所以最简单的方法是使用嵌套循环。
你只需要遍历的$priceYear
数组,检查每一个“年”值的acainst的YEAR
价值$array
。如果它们匹配,则可以只替换$priceYear
数组中的该值。
注释下面的代码以告诉您每一行在做什么:
// 1. loop through the nested arrays in $priceYear
foreach ($priceYear as $key => $price_years_array) {
foreach ($price_years_array as $index => $price_years_value) {
// 2. Create a variable to store the new value for the year in this $priceYear array,
// initialised to 0 (your specified default)
$new_year = 0;
// 3. check each year in your $array
foreach ($array as $replacement_values){
// 4. if $replacement_values has a YEAR and VALUE_AMDON...
// and $price_years_value matches the value in YEAR...
if( $replacement_values['YEAR'] && $replacement_values['VALUE_AMDON']
&& $replacement_values['YEAR'] == $price_years_value){
// 5. store this in our $new_year variable
$new_year = $replacement_values['VALUE_AMDON'];
}
}
// 6. after checking all years in $array, it we found a match it will be in $new_year
// otherwise it will still be 0.
// Now simple set this value - we can access this directly using $key and $index
$priceYear[$key][$index] = $new_year;
}
}
var_dump($priceYear);
使用不存在的年份的示例数据:
$priceYear = array(
'AZ' => array( 1 => 2021, 2 => 2020), // <-- 2021 doesn't exist in $array
'BY' => array( 0 => 2020, 1 => 2016), // <-- 2016 doesn't exist in $array
'CX' => array(1 => 2020, 2 => 2020, 3 => 2020),
'DW' => array(106 => 2019, 107 => 2019, 108 => 2019)
);
$array = array(
array('YEAR' => 2018, 'VALUE_AMDON' => 55),
array('YEAR' => 2019, 'VALUE_AMDON' => 57),
array('YEAR' => 2020, 'VALUE_AMDON' => 59)
);
输出:
Array
(
[AZ] => Array
(
[1] => 0 // <-- value is 0 because year didn't exist in $array
[2] => 59
)
[BY] => Array
(
[0] => 59
[1] => 0 // <-- value is 0 because year didn't exist in $array
)
[CX] => Array
(
[1] => 59
[2] => 59
[3] => 59
)
[DW] => Array
(
[106] => 57
[107] => 57
[108] => 57
)
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句