2016-09-21 333 views
1

我一直在尋找解決方案,但找不到適合我的問題的解決方案。 我想檢查現有的數組是否有指定的元素,如果沒有,然後做一些事情(添加元素)。我有關聯的數組與許多級別的數組。檢查數組元素是否存在

如何我可以檢查是否元素

$categories[][] 

存在給定的數組中,幷包含指定的數據?

到目前爲止,我有:

$categories = array(); 

    foreach ($data as $category) { 
     if (!in_array($category["Parent Category Name"], $categories)) { 
     $categories[] = $category["Parent Category Name"]; 
     } 
    } 

這是工作作爲迄今預期。

我需要檢查,如果

$categories[][] 

已經插入的值。我嘗試過:

$categories = array(); 

    foreach ($data as $category) { 
     if (!in_array($category["Parent Category Name"], $categories)) { 
     $categories[] = $category["Parent Category Name"]; 
     } 

     if (!in_array($category["Parent Category Name"], $categories) && !in_array($category["Child Category1"], $categories)) { 
     if ($category["Parent Category Name"] && $category["Child Category1"]) { 
      $categories[] = $category["Parent Category Name"]; 
      $categories[][] = $category["Child Category1"]; 
     } 
     } 
    } 

我不工作,第二如果語句沒有過濾數據,我想要的。不會將任何內容推送到新陣列中。

任何人都可以提出一些建議或指引我在正確的方向。

很多謝謝。

回答

1

您可以執行下列操作...

$categories = []; 
foreach ($data as $category) { 

     if (!isset($categories[$category["Parent Category Name"]])) { 

     $categories[$category["Parent Category Name"]] = [$category["Child Category1"]]; 

     }else { 

     if (!in_array($category["Child Category1"],$categories[$category["Parent Category Name"]])) { 

       array_push($categories[$category["Parent Category Name"]],$category["Child Category1"]); 

     } 
    } 

} 

這應該工作。

+0

謝謝維克多我嘗試了一下,讓你知道我是如何得到它。非常感謝 :) – CyberFountain