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