检查数组的元素是否存在

时间:2016-09-21 08:32:24

标签: php arrays sorting

我一直在寻找解决方案,但找不到适合我的问题的解决方案。 我想检查现有数组是否有指定的元素,如果没有,那么做一些事情(添加元素)。

我有多个级别的关联数据数组。

如何检查元素

$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 个答案:

答案 0 :(得分: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"]);

         }
     }

}

这应该有效。