索引数组可以用作关联数组吗?

时间:2012-07-08 22:37:51

标签: php arrays

我知道在PHP中有一个索引数组,如下所示:

$array = ("hello", "world")

与看起来像的关联数组相同:

$array = (0 => "hello", 1 => "world");

所以我的问题是这样的代码是否有效:

 $hello = $array[$array["hello"]];

我的想法是它转化为

$hello = $array[0]

,等于

$hello = "hello"

。换句话说,将

$array["hello"]

等于0?

3 个答案:

答案 0 :(得分:1)

不,您无法立即通过其值获取某个数组元素的键...除非您使用array_flip切换键和值:

$arr = array('hello', 'world');
$arr = array_flip($arr);
print $arr['hello']; // 0

答案 1 :(得分:1)

让我们来看看这个想法:

$array = ("hello", "world") // This is implicitly indexed by integer.

与:

相同
$array = (0 => "hello", 1 => "world"); // Explicit indexing.

您可以通过print_r($array)进行验证;在任何一种情况下,输出都会显示一个索引数组。 PHP数组都是关联的。即使您没有指定键,数组中的值也按整数索引号排序。

现在让我们来看看:

所以我的问题是这样的代码是否有效:

 $hello = $array[$array["hello"]];

这是代码中断的地方。为什么呢?

$array["hello"]不是有效值。这引用的是“索引”hello“中数组列表的值。

但是,array("hello", "world")没有索引键“hello”。相反,它有一个“hello”,它隐含了索引0。

请务必阅读PHP arrays并了解:

  1. PHP数组都是关联的; key可以是字符串,如果没有明确设置,则为整数。
  2. 关联数组的形式为key =>价值对。如果您有密钥,则可以找到与之关联的值。
  3. 当尝试从PHP数组中获取值时,语法为:$array['key']或者在多维数据$array['firstlevelkey']['secondlevelkey']的情况下等。返回的值将是key =&gt的值;该特定键的价值对。
  4. 我希望这有用!

答案 2 :(得分:0)

不,因为“hello”不是$ array中的有效键。

您可以使用array_key_exists( key ,* array *)检查密钥是否存在