【问题标题】:Can't we use numeric index on arrays with key value in PHP?我们不能在 PHP 中对具有键值的数组使用数字索引吗?
【发布时间】:2016-03-01 19:34:55
【问题描述】:

我在 PHP 中使用如下键值对定义了一个数组:

$myArray = (
    'item1' => 'val1',
    'item2' => 'val2',
    'item3' => 'val3'
);

但是每当我需要使用像$myArray[1] 这样的数字索引来使用这个数组中的一个存储值时,我都会收到以下错误:

注意:未定义的偏移量:1 ...

以前我虽然定义数组成员时总是创建数字索引,但现在这个错误告诉我我错了。

我的问题是:我们不能在使用 PHP 中的键值对创建的数组上使用数字索引吗?

【问题讨论】:

  • 您的数组中有错误'item3; => 'val3' 必须是'item3' => 'val3'
  • ^ 可能只是胖手指而已。 ; 就在 kb 上的 ' 旁边。
  • 你们都错过了array这个词,即= array(
  • 而且,这也是 ^ 但如果 PHP > 5.4,$myArray = [ 'item1' => 'val1', 'item2' => 'val2', 'item3' => 'val3' ]; 将是有效的
  • @Fred-ii- 但无论如何,他使用的是圆括号,而不是方括号。

标签: php arrays indexing offset key-value


【解决方案1】:

不,您不能通过数字索引访问关联数组的值。但是你可以先通过array_values 传递你的数组来得到你想要的:

echo array_values($myArray)[1];

http://php.net/array_values

array_values() 返回数组中的所有值并按数字索引数组。

【讨论】:

  • 你不应该在回显之前转换整个数组吗?
  • @frosty 取决于您的需要。如果您只需要一个值,这会更容易。
【解决方案2】:

您可以在明确需要时使用array_keys

$arrayKeys = array_keys($myArray);

echo $myArray[$arrayKeys[0]];

或者在foreach中:

foreach($myArray as $key=>$value) {
//$ key stores item1,item2,item3
//$value stores $val1, val2,val3
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 2021-07-03
    • 2010-11-30
    • 2020-04-10
    • 1970-01-01
    • 2011-09-17
    相关资源
    最近更新 更多