2016-09-21 9 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"]; 
     } 
     } 
    } 

私は動作しません、2番目のif文は私が望むようにデータをフィルタリングしません。新しい配列に何かを押し込まないでください。

誰かが何かを提案したり、正しい方向に私を向けることができます。

多くのありがとうございます。

答えて

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

関連する問題