我一直在寻找解决方案,但找不到适合我的问题的解决方案。 我想检查现有数组是否有指定的元素,如果没有,那么做一些事情(添加元素)。
我有多个级别的关联数据数组。
如何检查元素
$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"];
}
}
}
我不工作,第二个如果语句不按我的意愿过滤数据。不会将任何内容推送到新阵列。
任何人都可以提出建议或指出我正确的方向。
非常感谢。
答案 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"]);
}
}
}
这应该有效。