将值存储到变量

时间:2014-02-09 04:12:25

标签: php arrays

大家好,我看过一个让我感到困惑的代码。代码是

$array = array('Alpha' => 1.1,'Bravo' => 2.2,'Charlie' => 3.3,'Delta' => 4.4,'Echo' =>5.5, 'Golf' => 6.6);

$pos = 3;

function getAtPos($tmpArray,$pos) {
    $keys = array_keys($tmpArray);
    return array($keys[$pos-1] => $tmpArray[$keys[$pos-1]]);
}

$return = getAtPos($array,$pos);

var_dump($return);

只需查看代码的第5行。它返回一个数组,其中$keys[$pos-1]为关键字,$tmparray[$keys[$pos-1]为值。

我只需要知道$ pos-1存储到$ keys的值以及[$keys[$pos-1] stores to $tmparray ..的值

请帮助我理解这一点..任何帮助将不胜感激..谢谢提前

2 个答案:

答案 0 :(得分:0)

我真的不明白这个问题..但是

return array($keys[$pos-1] => $tmpArray[$key[$pos-1]]);

返回你在第一行创建的$数组内的数组,位置$ pos-1表示

如果你调用getAtPos($ array,3),它应该返回一个像这样的数组......

['Charlie'=>3.3]

修改

你看,顶部的$数组是一个key => value数组。也就是说,不是使用按位置编号的值,而是使用关键字标记它们。

在正常数组中,例如:[23,“Charlie”,“Stackoverflow”],如果你想得到数组的第二个元素(“Charlie”),你必须做这样的事情:$ var = $ array [1]。

在这种情况下,由于这是一个key =>值数组,您应该按关键字而不是位置进行查找,因此您在该返回中执行的操作是将关键字和值放在您所在位置的解决方法需要。

返回的内容是返回一个数组,其中包含$ array中使用$ pos变量指定的位置中元素的关键字和值。

这应该比我更清楚...... http://www.php.net/manual/en/language.types.array.php

答案 1 :(得分:0)

array_keys()函数应用于$ tmpArray时,$ keys变为数组,其中$ tmpArray键为值:

array(6) { [0]=> string(5) "Alpha" [1]=> string(5) "Bravo" [2]=> string(7) "Charlie" [3]=> string(5) "Delta" [4]=> string(4) "Echo" [5]=> string(4) "Golf" }

然后你返回一个数组,其中$ pos减去1(2'是'Charley')中声明的位置的键,并且作为他的值,$ pos中声明的位置的值减去$ tmpArray 数组中的1个(2为3.3)。

令人困惑的是,您正在从某个键生成一个新数组,并在其他数组中生成其值:

$return = array( 
        key($array[3]) => $array[3] 
); 

或者像lascort提到的那样:

$return = getAtPos($array, 3);