为什么 PHP 在我的关联数组前加上一个数字索引?

Why is PHP prepending a numerical index to my associative array?

当我使用这段代码时,

$views = array();
$views[]=['somevalue'=>'customerview.php'];
$views[]=['anothervalue'=>'ordersview.php'];

我明白了,

Array
(
    [0] => Array
        (
            [somevalue] => customerview.php
        )

    [1] => Array
        (
            [anothervalue] => ordersview.php
        )

)

如何在不使用 array_shift 之类的情况下摆脱初始数组?为什么它把数值数组放在第一位而不是这个,

Array
(
    [somevalue] => customerview.php
    [anothervalue] => ordersview.php

)

编辑:如何为此使用短语法?这可能吗?

当你这样做时:

$views[] = ['somevalue' => 'customerview.php'];

你是说,“将另一个元素推入数组,并为其分配以下值:

'somevalue' => 'customerview.php'

但是这个数量是一个数组键和一个数组值。因此,您正在做的是在 $views 数组中插入一个本身包含数组键和数组值的元素。这解释了您所看到的行为。

这应该会给您想要的结果:

$views = array();
$views['somevalue'] = 'customerview.php';
$views['anothervalue'] ='ordersview.php';

或者,在 shorthand 中:

$views = [
   'somevalue' => 'customerview.php',
   'anothervalue' => 'ordersview.php'
];

或者你可以这样做:

    $value1 = 'first';
    $value2 = 'second';

    $array = array(
        $value1 => 'customerview.php',
        $value2 => 'ordersview.php'
    );

$views 已经是一个数组,所以当您使用 $views[] 时,您是在向现有数组中添加另一个数组。

您需要使用

$views = array(
    'somevalue' => 'customerview.php',
    'anothervalue' => 'ordersview.php'
)