当$arr
的值未设置为NULL
时,以下代码会向我提供所有产品。
$arr
有时还包含需要过滤掉的值。
这意味着,$condition
我希望检查是否"所有"数组$arr
中的值未设置为NULL
但忽略值" apple"," orange"和"香蕉"当你在阵列中找到它们时。
有没有办法实现我的目标?我也尝试从数组中删除这些元素(第2行),但由于某种原因,这对我不起作用。
$arr = $_POST['selected_checkboxes'];
unset($arr["apple"], $arr["orange"], $arr["banana"]); // Trying to remove these keys from the array
var_dump($arr);
$products = array();
$condition = '`' . join('` IS NOT NULL AND `', $arr) . '` IS NOT NULL';
if($result = $db->query("SELECT * FROM produkte WHERE $condition")){
while($row = $result->fetch_object()) {
if (!in_array($row->name, $products)) {
array_push( $products, array('name'=>$row->name, 'image'=>$row->image, 'link'=>$row->link) );
}
}
}
else {
array_push($products, 'error');
}
答案 0 :(得分:0)
根据提供的代码,我猜你在键和值之间存在混淆; $arr['apples']
仅在您拥有复选框<input ... name="apples">
时才会存在,但根据您的SQL,您似乎拥有<input ... name="selected_checkboxes" value="apples">
;在这种情况下,您可能想尝试类似:
<?php
$filter = ['banana', 'orange', 'apple'];
$p = ['papaya', 'mango', 'pear', 'apple', 'grape', 'orange', 'cranberry'];
$arr = array_filter($p, function($v) use($filter) { return !in_array($v, $filter); });
var_dump($arr);