$ var [] = array()和$ var = array()之间有什么区别?

时间:2014-04-19 07:17:52

标签: php arrays

当我写$var = array('index' => 'some value')时,它在浏览器页面上显示表单时显示错误:

Notice: Undefined offset: 0 in C:\xampp\htdocs\learn\php\admin\authors\form.html.php on line 28.

但是当我这样写$var[] = array('index' => 'some value')时,它完美地显示了页面。所以我必须在变量名后加上[]。据我所知,我可以创建一个像$var = array(some array)这样的数组变量。

那么实际上这两者有什么区别?

5 个答案:

答案 0 :(得分:3)

当您编写$ var = array(' index' =>'某些值')时,您无法访问$ var [0],导致此索引无法使用'存在。您必须使用$ var [' index']来访问该值。

使用$ var [] = array(..),将array()推送到$ var,这样它就会创建一个索引为0的新条目。如果你使用var_dump($ var),你将拥有:

array([0] => array(['index'] => 'somevalue'));

答案 1 :(得分:2)

结果不同:

$var = array('index' => 'some value');
var_dump($var);

// array(1) {
//   ["index"]=>
//   string(10) "some value"
// }

$var[] = array('index' => 'some value');
var_dump($var);

// array(1) {
//   [0]=>
//   array(1) {
//     ["index"]=>
//     string(10) "some value"
//   }
// }

如果仔细观察,第一个示例将创建一个具有一个密钥对的关联数组。第二个示例创建一个数组,其中包含索引0处的一个项目;那一项是关联数组。

答案 2 :(得分:1)

如果你这样做.. $var[]=array();

空数组存储为$var数组中的第一个索引..

Array
(
    [0] => Array
        (
        )

)

如果你这样做.. $var = array();

您只是将它$var声明为数组。

Array
(
)

很明显,你知道区别是什么......

A simple demo

答案 3 :(得分:1)

$var[] = array()是一个二维数组,就像说的那样。

 $var = array(); // 1 dimensional array
 $var[0] = array();

尝试在两个不同的示例中使用var_export($var)来查看差异。

答案 4 :(得分:1)

$var = array('index' => 'some value')表示内部带有数组值的变量

$var[] = array('index' => 'some value')表示最后一个索引中包含另一个数组的数组。 这与写$var = array(array('index' => 'some value'))

相同