检查数组元素是否存在


Checking if elements of array exists

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

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

如何检查元素

$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"];
        }
      }
    }

I不工作,第二个if语句没有过滤我想要的数据。不向新数组内压入任何内容。

谁能给我点建议或指点一下方向?

许多谢谢。

您可以这样做…

$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"]);
         }
     }
}

应该可以。