我有一个数组,我在数据库中存储一个值,如下所示:
$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
我做错了什么?
答案 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
此变量并将其发布到您的答案中吗?