$var[] = array()和$var = array()有什么区别?它们都与数组有关。

3
当我写了$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)
那么这两者之间实际上有什么区别呢?

$var = array('index' => 'some value') 是一个有效的 PHP 语句,其中没有错误。但是,当您尝试使用键值为“0”的数组时,仍然可能会出现未定义偏移量错误。请检查一下。 - Ganesh Babu
根据你的问题,差别在于 $var[] 给已存在的键赋值,比如 0。$var 直接获取数组,然后将其赋值给一个变量。 - Ganesh Babu
5个回答

4
结果是不同的:
$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处; 该项目是关联数组。


3
当你写 $var = array('index' => 'some value') 时,你不能访问 $var[0],因为这个索引不存在。你必须使用 $var['index'] 来访问这个值。
使用 $var[] = array(..),你将数组()推入 $var 中,所以它会创建一个新的索引为0的条目。如果你使用 var_dump($var),你会得到:
array([0] => array(['index'] => 'somevalue'));

1

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

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

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


1
"

$var = array('index' => 'some value') 表示一个变量具有数组值

$var[] = array('index' => 'some value') 表示一个数组在最后一个索引处有另一个数组。 这与写成 $var = array(array('index' => 'some value')) 是相同的。

"

1
如果您执行$var[]=array();,则会将一个空数组存储为$var数组的第一个索引。
Array
(
    [0] => Array
        (
        )

)

如果你这样做 $var = array();,你只是在声明$var为一个数组。
Array
(
)

显然,你知道区别是什么...

一个简单的演示


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接