2016-09-14 71 views
0

我有陣列dishesfavorites。我的目標是在dishes陣列中添加一個字段,如果favorites之一發生某個菜。這是我所嘗試的,但它似乎沒有工作,因爲我得到一個空陣列回來。PHP比較2個陣列並在匹配時添加一個字段

$boundDishes = []; 

foreach ($dishes as $dish) { 
    foreach ($favorites as $favorite) { 
     if ($favorite == $dish) { 
      $dishes['favorite'] = true; 
      $boundDishes[] = $dish; 
     } 
    } 
} 
return $boundDishes; 

我做錯了什麼或有沒有更好的方法?

任何幫助非常感謝!

非常感謝提前!

+1

請張貼數組以及。 – MKB

+2

'$ boundDishes [] = $ dishes''必須是'$ boundDishes [] = $ dish;'我想 –

+0

你想在數組中添加一個值嗎? –

回答

0

爲了使這個答案,你正在返回$ boundGames但不加任何東西給它所以這就是爲什麼它是空的,沒有你的意思是在你的循環如下添加到$ boundGames,而不是$ boundDishes

$boundGames = []; 

foreach($dishes as $dish) { 
    foreach($favorites as $favorite) { 
     if($favorite == $dish) { 
      $dishes['favorite'] = true; 
      $boundGames[] = $dishes; 
     } 
    } 
} 
return $boundGames; 

或者,您的意思是return $boundDishes

+0

對不起,我複製了錯誤的代碼我更新了OP –

+0

您可以在進入循環之前添加** **盤**和** $ favorites **數組的var_dump,以便我們可以看到您準確使用了哪些數據? –

+0

我想我發現問題我的$盤陣列是一個對象數組,我需要找到一種方法將它轉換成乾淨的數組我猜 –

0
<?php 

$dishes = 
[ 
    'chips', 
    'hummus', 
    'eggs', 
    'ham' 
]; 


$favourites = 
[ 
    'spam', 
    'hummus' 
]; 

foreach($favourites as $favourite) { 
    if(!in_array($favourite, $dishes)) { 
     $dishes[] = $favourite; 
    } 
} 

var_export($dishes); 

輸出:

array (
    0 => 'chips', 
    1 => 'hummus', 
    2 => 'eggs', 
    3 => 'ham', 
    4 => 'spam', 
) 

或者只是合併,然後篩選唯一值:

$dishes = array_unique(array_merge($dishes, $favourites)) 

也許你只需要一個輔助函數:

$is_favourite = function($dish) use ($favourites) { 
    return in_array($dish, $favourites); 
}; 

echo $is_favourite('spam') ? 'They love spam!' : ''; 
0

這是什麼你意思是?

$boundDishes = []; 

foreach ($dishes as $dish) { 
    if (in_array($dish, $favourites)) { 
     $boundDishes[] = $dish; 
    } 
} 
return $boundDishes;