2

我有以下...

/* Request access tokens from twitter */
$access_token = $connection->getAccessToken($_REQUEST['oauth_verifier']);

$_SESSION['access_token'] = $access_token;
echo $access_token[2];

"$access_token" 是一个数组,我试图从这个数组中检索一个值,只有上面的回显似乎没有回显任何东西?

转储变量

array(4) { ["oauth_token"]=> string(50) "81920494-vHspkpas4WiOYoFKCgto85mW2XeTxuA130MwcHHWb" ["oauth_token_secret"]=> string(42) "WwIYybFivEwZQ1ORbeqY1irHT385EIuh27alWy9ED4" ["user_id"]=> string(8) "81989494" ["screen_name"]=> string(12) "KlareB" }
4

2 回答 2

5

如果 var_dump 是:

array(4) { ["oauth_token"]=> string(50) "81920494-vHspkpas4WiOYoFKCgto85mW2XeTxuA130MwcHHWb" ["oauth_token_secret"]=> string(42) "WwIYybFivEwZQ1ORbeqY1irHT385EIuh27alWy9ED4" ["user_id"]=> string(8) "81920494" ["screen_name"]=> string(12) "KlareBrennan" }

然后echo $access_array[2];不会工作,因为它没有数字索引。

你需要做:

echo $access_array['user_id'];
于 2013-05-28T19:49:04.053 回答
1

有必要记住 PHP 中的数组实际上是 hashmaps。也就是说,它们是对的关联数组key => value

$_SESSION['access_token'] = $access_token;
echo $access_token[2];

这意味着上面的代码将在$access_token数组中查找,而不是在position 2处,而是在key 2处。我们可以从您的 vardump 中看到没有密钥2

array(4) { 
  ["oauth_token"]=> string(50) "81920494-vHspkpas4WiOYoFKCgto85mW2XeTxuA130MwcHHWb
  ["oauth_token_secret"]=> string(42) "WwIYybFivEwZQ1ORbeqY1irHT385EIuh27alWy9ED4" 
  ["user_id"]=> string(8) "81920494" 
  ["screen_name"]=> string(12) "KlareBrennan" 
}

请注意,对于大多数索引数组,此功能完全相同,这会导致您感到困惑。请考虑以下代码:

<?php

  $blah = array();
  $blah['mykey'] = "My first key.";
  $blah[] = "My second key.";
  $blah[1] = "My third key.";
  $blah[] = "My last key.";

  var_dump($blah);

它的结果:

array(4) {
  ["mykey"]=>
  string(13) "My first key."
  [0]=>
  string(14) "My second key."
  [1]=>
  string(13) "My third key."
  [2]=>
  string(12) "My last key."
}

我们可以看到,如果没有指定密钥,则使用下一个可用密钥;在这个数字中,数字被分配为键值对的键,但它们可以与字符串键一起存在。array_values()因此,如果您想遍历数组的所有内容,这是一个有用的函数。

于 2013-05-28T20:11:20.127 回答