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

PHP-在数组中查找特定值(多维),php,arrays,multidimensional-array,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->ex

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

$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 ) ) 
然后我有一个循环,循环所有的标记。在该循环中,我尝试搜索特定的令牌,如果该令牌匹配,它将被标记为“已看到”:

这是我的循环:

$icon = "not-seen";
foreach($d as $value){
   $token = $value["token"];
   $searchParam = searchForId($token, $data);
   if($searchParam == $token){
     $icon = "seen";
   }                            
}
但是,
searchForid()
只返回
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数组不包含您声称它包含的内容,您能否
打印\r
此变量并将其发布在您的答案中?

注意:您正在添加另一个维度
$data[]=$stmt-
,只需
$data=
,为什么不通过查询的方式搜索令牌?@Ghost啊,好消息!我现在在OP中改变了这一点,并且使用该函数是多余的,
$token=$value[“token”]
已经是一个字符串,然后你将它加载到你的函数中,然后循环它,这是没有意义的,为什么不在第一个循环中搜索它,废弃函数,不要忘记添加
break
一旦找到,或者干脆选择屏幕上标记的位置query@Ghost我假设$d和$data都是具有不同令牌的数组,OP希望将$d中的每个令牌与$data中的每个令牌进行比较。如果我错了,请纠正我。$d只是一个从我的数据库表中获取数据的查询$值[“token”]是数据库中的一列。我在OP中也更改了该列。然而,它仍然不起作用。现在Searchforid()返回“0”,这只是从数据库中选择结果的查询。循环工作,您确信
$token=$value[“token”]
的值是否正确?是的,它的值与数组中的值相同。如果$searchParam==$token永远不会为真,那么我应该使用什么?
$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;