簡體   English   中英

當其中一個鍵與另一個數組的值匹配時,如何合並兩個 arrays

[英]How to merge two arrays when a key of one of them and a value of the other array is match

我正在尋找一種方法來合並兩個 arrays 並創建二維數組。

日數組

(
    [1] => tue
    [2] => wed
    [4] => fri
    [5] => sat

我想分配以下值。

水果數組

array (
  'tue' => 'banana',
  'fri' => 'apple',
  'sat' => 'orange',
)  

二維數組預期結果

  $array = [
   1 =>['tue','banana'],
   2 =>['wed'],
   4 =>['fri','apple'],
     5 =>['sat','orange']

我試着做到了

{
    foreach ($dayArray as $key => $value)
    {
        if($fruitArray[$value]){
            $dayArray[$key] = array($key,$value,$fruitArray[$value]);
        }
    }
}

ErrorException:嘗試訪問 f 中類型為 null 的值的數組偏移量

用這個

使用 isset 方法檢查 fruitArray 中可用的日期密鑰

$dayArray = array('tue','wed','fri','sat');
// print_r($array);
$fruitArray = array (
  'tue' => 'banana',
  'fri' => 'apple',
  'sat' => 'orange',
);
$newTwoDimensionalArray = [];
foreach($dayArray as $day){
  if(isset($fruitArray[$day])){
    $newTwoDimensionalArray[] = [$day,$fruitArray[$day]];
  } else {
    $newTwoDimensionalArray[] = [$day,''];
  }
}
$dayArr = array(1 => 'tue', 2 => 'wed', 4 => 'fri',5 => 'sat');
$fruitArr = array (
   'tue' => 'banana',
   'fri' => 'apple',
   'sat' => 'orange',
);
$result = array_map(function ($val) use ($fruitArr) {
   return array_key_exists($val, $fruitArr) ? [$val, $fruitArr[$val]] : [$val];
}, $dayArr);

帶箭頭 function:(版本 php >= 7.4)

$dayArr = array(1 => 'tue', 2 => 'wed', 4 => 'fri',5 => 'sat');
$fruitArr = array (
   'tue' => 'banana',
   'fri' => 'apple',
   'sat' => 'orange',
);
$result = array_map(fn ($val) => array_key_exists($val, $fruitArr) ? [$val, $fruitArr[$val]] : [$val], $dayArr);

看起來您忘記添加isset()來檢查密鑰是否存在:

if(isset($fruitArray[$value])){
   $dayArray[$key] = [$value,$fruitArray[$value]);
}
else {
   $dayArray[$key] = [$value];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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