0

我知道在 PHP 中的索引数组看起来像:

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

与如下所示的关联数组相同:

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

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

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

我的想法是它转化为

$hello = $array[0]

,这将等于

$hello = "hello"

. 换句话说,将

$array["hello"]

等于0?

4

3 回答 3

1

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

$arr = array('hello', 'world');
$arr = array_flip($arr);
print $arr['hello']; // 0
于 2012-07-08T22:40:41.203 回答
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 数组并理解:

  1. PHP 数组都是关联的;键可以是字符串,或者如果没有明确设置,将是整数。
  2. 关联数组采用键 => 值对的形式。如果你有一个键,你可以找到与之关联的值。
  3. 当尝试从 PHP 数组中获取值时,语法是:$array['key']或者在多维$array['firstlevelkey']['secondlevelkey']等情况下。返回的值将是该特定键处的键 => 值对的值。

我希望这是有帮助的!

于 2012-07-08T23:09:24.737 回答
0

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

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

于 2012-07-08T22:40:47.303 回答