来自php数组的空返回值

时间:2013-05-28 19:44:56

标签: php arrays

我有以下......

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

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

“$ access_token”是一个数组,我试图从这个数组中检索一个值,只有上面的回声似乎没有回应什么?

dump var

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

2 个答案:

答案 0 :(得分: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'];

答案 1 :(得分:1)

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

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

这意味着上述代码将在$access_token数组中查找,而不是在位置 2,而是在 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()是一个有用的函数,如果你想迭代所有数组的内容。