[英]Check if key is present in another array then take value
我試圖檢查月份是否存在於另一個數組中,如果是,則從該數組中獲取值。
月數組
$months = array('01','02','03','04','05','06','07','08','09','10','11','12');
數據數組
$data = array("01"=>5,"02"=>2, "03"=>6.2, "11"=>10);
我的解決方案
$newArray = array();
foreach($months as $mon){
foreach($data as $key => $value){
if(isset($data[$mon])){
$newArray[$mon] = $value;
}
else{
$newArray[$mon] = '0';
}
}
}
解決方案打印:
"response": {
"10": "0",
"11": 10,
"12": "0",
"01": 10,
"02": 10,
"03": 10,
"04": "0",
"05": "0",
"06": "0",
"07": "0",
"08": "0",
"09": "0"
},
可以看到A,將值10分配給所有鍵。 應該僅將其分配給鍵11,其他鍵應具有與數據數組中不同的值。“ 01” => 5,“ 02” => 2,“ 03” => 6.2
您不需要遍歷數據數組,只需要檢查它是否在$ data數組中設置:
$newArray = array();
foreach($months as $mon){
$newArray[$mon] = (isset($data[$mon]) ? $data[$mon] : '0');
}
如果我了解您想要的內容,則可以使用array_reduce
:
$result = array_reduce($months, function ($result, $month) use ($data) {
$result[$month] = $data[$month] ?? 0;
return $result;
}, []);
演示: https : //3v4l.org/WCIId
這是越野車的一部分:
考慮當前的$mon
為01
, $key
$value
對為"11"=>10
if(isset($data[$mon])){ // $data[$mon] is set (this is $data["01"])
$newArray[$mon] = $value; //$value = 10 actually. It sets the wrong value to $newArray["01"]
您不需要該內部循環,因為您可以檢查$data[$mon]
並使用它代替$value
$months = array('01','02','03','04','05','06','07','08','09','10','11','12');
$data = array("01"=>5,"02"=>2, "03"=>6.2, "11"=>10);
$newArray = array();
foreach($months as $mon)
{
if(isset($data[$mon])){
$newArray[$mon] = $data[$mon];
}
else{
$newArray[$mon] = '0';
}
}
var_dump($newArray);
產量
array (size=12)
'01' => int 5
'02' => int 2
'03' => float 6.2
'04' => string '0' (length=1)
'05' => string '0' (length=1)
'06' => string '0' (length=1)
'07' => string '0' (length=1)
'08' => string '0' (length=1)
'09' => string '0' (length=1)
10 => string '0' (length=1)
11 => int 10
12 => string '0' (length=1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.