2017-05-25 77 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

相關問題