我在cakephp控制器中有一个动作 它将report_id作为参数,将Selected Fields作为数组。
我正在尝试将包含已存在的属性ID的数组与我从动作帖子中收到的数组进行比较..如果该特定属性id如果不存在于接收到的数组中那么我试图删除该条目在报告表中.. 我不知道在这种情况下如何使用NOt等于运算符。请帮帮我.......
function updateReport($report_id){
$attribute_ids=$this->params['form']['attr'];
$comma_separated = explode(",", $attribute_ids);
$count=count($comma_separated);
//$comma_separated contains 200,203
$exists=$this->Report->find('all',array('conditions'=>array('Report.report_id'=>$report_id)));
//$exists contains the attributes as 200 , 201, 203
foreach($exists as $exist){
for($i=0;$i<$count;$i++){
if($exist['Report']['attribute_id']==$comma_separated[$i]){
echo "not in array $comma_separated ".$exist['Report']['attribute_id'];echo " ";
}
}
}
}
答案 0 :(得分:1)
听起来您正在寻找array_intersect()和/或array_diff()。
$comma_separated = array(200, 203);
$exists=array(200, 201, 203);
foreach(array_diff($exists, $comma_separated) as $x) {
echo $x, ' not in array $comma_separated. ';
}
打印
201 not in array $comma_separated.
答案 1 :(得分:0)
要查看数组以查看是否存在某些内容,您需要执行以下操作:
foreach($exists as $exist){
$exists = false;
for($i=0;$i<$count;$i++){
if($exist['Report']['attribute_id']==$comma_separated[$i]){
//It exists in the array;
$exists = true;
}
}
if($exists){
echo "$exist['Report']['attribute_id'] exists";
}else{
echo "$exist['Report']['attribute_id'] does not exist";
}
}