2017-05-25 51 views
1

您好,我对PHP相当陌生,想知道如何在同一个数组中找到特定的tokentoken_time。例如,如何在下面的数组中找到token440745553780011a38b207466e2dae1a以及token_time1495672355并让它们显示?如何在PHP数组中找到特定值

阵列

array (size=1) 
    'token' => 
    array (size=4) 
     0 => 
     array (size=2) 
      'token' => string '04a1dd0991b366fdc4d7d46fcff03cb3' (length=32) 
      'token_time' => int 1495672339 
     1 => 
     array (size=2) 
      'token' => string '80d84dc863cbbeaef0c9a448f7865352' (length=32) 
      'token_time' => int 1495672345 
     2 => 
     array (size=2) 
      'token' => string '440745553780011a38b207466e2dae1a' (length=32) 
      'token_time' => int 1495672355 
     3 => 
     array (size=2) 
      'token' => string '766ac765d2a34e01cd954444d5895208' (length=32) 
      'token_time' => int 1495672525 

回答

1

这里是一个函数,完成你所需要的:

function findToken(&$array, $token, $time){ 
    foreach($array['token'] as $data){ 
     if($data['token'] == $token && $data['token_time'] == $time){ 
      return $data; 
     } 
    } 
    return null; 
} 

这里是如何使用它:

$token = findToken($array, '440745553780011a38b207466e2dae1a', '1495672355'); 
if($token){ 
    echo "Found token"; 
} else { 
    echo "Token not found"; 
} 
2

出人意料的是,你可以简单地使用array_search ()像你通常会但有一个数组:

$id = array_search([ 
    'token' => '440745553780011a38b207466e2dae1a', 
    'token_time' => 1495672355 
], $array['token']); 

$id将包含两个值都存在的数组的id。然后,您可以访问它像这样:

$array['token'][$id]; 

条款甚至不需要是在针阵列以正确的顺序或类型:

$id = array_search([ 
    'token_time' => '1495672355', //passed as string, whereas array has these as ints 
    'token' => '440745553780011a38b207466e2dae1a' 
], $array['token']); 
+0

这种解决方案的问题是,如果数组不匹配元素的元素,搜索将失败。问题在于找到特定的令牌和token_time,大概是在数组中可能包含的不仅仅是“token”和“token_time”。 – user2914191

相关问题