我一直在寻找解决方案,但找不到一个好的解决我的问题。我想检查现有的数组是否有指定的元素,如果没有,然后做一些事情(添加元素)。
我有一个多级数据的关联数组。
如何检查元素
$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"]);
}
}
}
应该可以。