传递数组以在循环内运行

时间:2017-09-05 08:53:19

标签: php mysql arrays function

在下面的代码中,我使用函数中的一些检查来获取成功结果的数组。下一次迭代,我将该数组传递给同一个函数,以便不检查再次相同的行。唯一的问题是数组是空的,即使我找到一些匹配的结果,如果我在$ 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))也没问题,但它与我的实际问题无关。

0 个答案:

没有答案