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

时间:2015-06-17 18:22:47

标签: arrays php-5.5

当我使用此代码时,

$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

)

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

3 个答案:

答案 0 :(得分:3)

执行此操作时:

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

你说,"将另一个元素推送到数组上,并为其分配以下值:

'somevalue' => 'customerview.php'

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

这可以为您提供所需的结果:

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

或者,简写:

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

答案 1 :(得分:1)

或者你可以这样做:

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

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

答案 2 :(得分:1)

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

您需要使用

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