簡體   English   中英

檢查鍵是否在另一個數組中,然后取值

[英]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

這是越野車的一部分:

考慮當前的$mon01$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM