检查多维数组中是否存在mysql数据库中的值

时间:2013-12-03 07:17:21

标签: php mysql arrays

我在mysql数据库中有多个ID。我想知道数据库中是否存在多维数组中不存在的ID。对于多维数组中不存在的每个ID,需要删除该行。以下代码是我目前所拥有的。

function multi_array_search($search_for, $search_in) {
    foreach ($search_in as $element) {
        if ( ($element === $search_for) ) {
            return true;
        } elseif (is_array($element)) {
            $result = multi_array_search($search_for, $element);
            if($result == true)
                return true;
        }
    }
    return false;
}

$output = mysql_query("SELECT id FROM ads");
while ($g = mysql_fetch_array($output)) {
    echo multi_array_search("$g", $arr) ? 'Found' : 'Not found';
}

我不认为上面的代码对我想要的是正确的吗?

信息: $ arr看起来像:

Array ( 
    [0] => Array ( 
        [url] => http://
        [id] => 752 
    ) 
    [1] => Array ( 
        [url] => http://
        [id] => 758 
    )
)

我现在尝试了一些解决方案,并且没有任何一个工作:(

3 个答案:

答案 0 :(得分:0)

每件事似乎都很好。只需进行少量更新即可从elseif中删除不需要的代码,并在!empty条件中再添加一项elseif支票。

function multi_array_search($search_for, $search_in) {
    foreach ($search_in as $element) {
        if ($element === $search_for){
            return true;
        }elseif(is_array($element) && !empty($element)){
            $result = multi_array_search($search_for, $element);
        }
    }
    return false;
}
$output = mysql_query("SELECT id FROM ads");
while ($g = mysql_fetch_array($output)) {
    echo multi_array_search("$g", $arr) ? 'Found' : 'Not found';
}

希望会有所帮助!

答案 1 :(得分:0)

$removeid=array();
$idarray is the  multi dimensional array you want to check your database id with.
$result = 'store your databse id here in the form of an array';
foreach ($result as $key => $value) {
    $result=$value;
    if(!empty($result))
    {
    foreach ($idarray as $key => $value) { 
    if ($value["id"] != $result) {
        $removeid=$key;
        }
    }
   }
}

现在$removeid包含要从数据库中删除的ID

答案 2 :(得分:0)

          $un_array = array();
          foreach ($array as $h) {
              $id = $h['id'];
              array_push($un_array, $id);
          }
          $db_array = array();
          $output   = mysql_query("SELECT id FROM account WHERE account='$username'");
          while ($g = mysql_fetch_assoc($output)) {
              $id = $g['id'];
              array_push($db_array, $id);
          }
          $result = array_diff($db_array, $un_array);
          foreach ($result as $r) {
              mysql_query("DELETE FROM account WHERE id='$r'");
          }