在下面的代码中,我使用函数中的一些检查来获取成功结果的数组。下一次迭代,我将该数组传递给同一个函数,以便不检查再次相同的行。唯一的问题是数组是空的,即使我找到一些匹配的结果,如果我在$ arr2的脚本末尾做一个var_dump,它将填充结果。 我错过了什么?
$arr2 = array();
foreach( $array1 as $arr1 ){
$result = customFunct($arr1['data'], $arr2);
if( !empty($result) ){
$arr2[] = $arr1['id']
}
}
function customFunct($data, $arr2){
$result = false;
//some checks for the $data;
$sql = "SELECT * FROM `table`
WHERE `data` LIKE '".$data."' AND `id` NOT IN('".implode(',', $arr2)."')";
//query the db
if( !empty($checks) ) $result = true;
return $result;
}
更新:我只能相信......这就像我正在阅读一些Facebook评论。这是一个案例,可以弄清楚我在尝试什么实现,我不认为语法错误阻止你在这里看到真正的问题。但如果是这样,我修复它。 现在,回答一些陈述,没有:
$sql = "SELECT * FROM `table`
WHERE `data` LIKE '".$data."' AND `id` NOT IN('".implode(',', $arr2)."')";
这个sql完全没有错,IN(23,34)和IN(' 23'' 34')都是正确的,它只需要用引号括起来当数据不是整数时。 是的,当然你必须在sql中准备你的语句,但这只是一个案例,好吗? 是的,如果($ result)没问题,但if(!empty($ result))也没问题,但它与我的实际问题无关。