2011-05-16 16 views
0

第一個數組PHP陣列相結合,其中第二個值相匹配的條件維持秩序

[0] => Array 
    (
     [name] => Car 
     [selected] => 1 
    ) 

[1] => Array 
    (
     [name] => Boat 
     [selected] => 1 
    ) 

[2] => Array 
    (
     [name] => Bike 

    ) 

[3] => Array 
    (
     [name] => Tank 
    ) 

[4] => Array 
    (
     [name] => Aircraft 
    ) 

第二個數組:

[0] => Array 
    (
     [name] => Boat 
     [code] => PLA 


    ) 

[1] => Array 
    (
     [name] => Car 
     [code] => GTO 


    ) 

所以我需要的是創建一個包含第一陣列的所有值的新陣列,但'selected'條目需要按照第二個數組的順序。

期望的數組:

[0] => Array 
     (
      [name] => Boat 
      [selected] => 1 
     ) 

    [1] => Array 
     (
      [name] => Car 
      [selected] => 1 
     ) 

    [2] => Array 
     (
      [name] => Boat 

     ) 

    [3] => Array 
     (
      [name] => Tank 
     ) 

    [4] => Array 
     (
      [name] => Aircraft 
     ) 

回答

1
$desiredArray = array(); 
$checkArray = array(); 
$arrayToAdd =array(); 
foreach ($secondArray as $item) 
{ 
    foreach($firstArray as $item2) 
    { 
     if($item2['name'] == $item['name'] && $item2['selected']) 
     { 
      $n = count($desiredArray); 
      $desiredArray[$n]['name'] = $item['name']; 
      $desiredArray[$n]['selected'] = 1; 
      $checkArray[] = $item['name']; 
     }    
    } 
} 
foreach($firstArray as $item) 
{ 
    if(!in_array($item['name'], $checkArray)) 
    { 
     $desiredArray[]['name'] = $item['name']; 
    } 
} 

試試這個,我不能說我很驕傲,但它可能只是你需要什麼。此代碼假定第一個和第二個數組都有對應的名稱字段。我沒有廣泛測試過,但如果你需要的話,請隨時使用它。

+0

謝謝,我調整了上面的答案,但這看起來更好。 – BobFlemming 2011-05-17 16:38:07

-2

所以讓我得到這個直,所以我其實可以嘗試回答你的問題:

你的目標是要確保在你的「第一次」陣列選定的項目按照與「第二」數組相同的方式進行排序。所以你會想要不同的順序相同的數組值,並且該順序是在「第二個」數組中指定的順序?

+0

這是正確的。 – BobFlemming 2011-05-16 16:48:11

+0

這應該是一個評論,因爲它不是一個答案 – 2017-10-13 19:09:49

1
foreach($second as $k => $v) if(isset($v['selected')) $selected[$v['name']] = $v; 
foreach($first as $k => $v){ 
    $Desired[]['name'] = $v['name']; 
    if(isset($selected[$v['name']])) $Desired[]['selected'] = 1; 
} 
+0

這爲[選定],[0] [名稱] 1 [選定]創建了一個新的值,但幫助我的方式。謝謝! – BobFlemming 2011-05-17 16:36:19

相關問題