PHP - 在数组中查找特定值(多维)

时间:2015-11-27 07:47:06

标签: php arrays multidimensional-array

我有一个数组,我在数据库中存储一个值,如下所示:

$stmt = $dbh->prepare("SELECT token FROM advertisement_clicks  WHERE (username=:username OR ip=:ipcheck)");
$stmt->bindParam(":username",$userdata["username"]); 
$stmt->bindParam(":ipcheck",$ipcheck);
$stmt->execute();

$data = array();
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);

所以,这给了我:array("token","token");

我打印时:

Array ( [0] => Array ( [token] => 677E2114AA26BA4351A686917652C7E1BA67A32D ) [1] => Array ( [token] => C42190F3D72C5BB6BB6B68488D1D4662A8D2A138 ) ) 

然后我有一个循环,循环所有的标记。在该循环中,我尝试搜索特定的令牌,如果该令牌匹配,它将被标记为“看到”:

function searchForId($id, $array) {
    foreach ($array as $key => $val) {
        if ($val['token'] === $id) {
            return $key;
        }
    }
}

这是我的循环:

$icon = "not-seen";
foreach($d as $value){
   $token = $value["token"];
   $searchParam = searchForId($token, $data);
   if($searchParam == $token){
     $icon = "seen";
   }                            
}

但是,searchForid()只会返回0

我做错了什么?

1 个答案:

答案 0 :(得分:0)

好的,在这里你可以看到一个有效的PHP小提琴

$data = array();
$data[] = array('token'=>'123');
$data[] = array('token'=>'456');

function searchForId($id, $array) {
    foreach ($array as $key => $val) {
        if ($val['token'] === $id) {
            return true;
        }
    }
    return false;
}

$icon = "not-seen";
foreach($data as $value){
   $token = $value["token"];
   $searchParam = searchForId($token, $data);
   if($searchParam){
     $icon = "seen";
   }                            
}
echo $icon;

它回应'seen',因为我比较了相同的数组值,现在假设你的$d变量有不同的标记,它应该仍然以这种方式工作。

这意味着您的$ d数组不包含您声明包含的内容,您可以print_r此变量并将其发布到您的答案中吗?