我只是想知道这两者之间的区别,表现明智,哪一个最好用
$data = array(
'key1' => 'some value',
'key2' => $some_variable
);
和这一个
$data = array(); // can be omitted
$data['key1'] = 'some value';
$data['key2'] = $some_value
答案 0 :(得分:2)
这种比较不是思考的方式。当您编写一些实用代码时,您将根据问题的需要在两种方法之间切换。就像从数据库中访问某些行一样,你必须在循环中使用第二行,尽管很少使用array()
但是有时你会喜欢它,因为字符串索引数组必须以这种方式分配您没有从$_POST
或数据库获取值的情况。但是确实存在两种方法都可以使用的情况,但是你可能更喜欢循环中的第二种方法,因为你的代码会更短,并且你的手指在分配值时可能需要承担更少的痛苦,可能是10,000个条目。快乐的编码! :)
答案 1 :(得分:0)
回到这个问题,第一种方式会更快,请参阅下面的操作码:
$data = array(
'key1' => 'some value',
'key2' => $some_variable
);
line # * op fetch ext return operands
---------------------------------------------------------------------------------
3 0 > INIT_ARRAY ~0 'some+value', 'key1'
5 1 ADD_ARRAY_ELEMENT ~0 !1, 'key2'
2 ASSIGN !0, ~0
6 3 > RETURN 1
$data = array(); // can be omitted
$data['key1'] = 'some value';
$data['key2'] = $some_value
line # * op fetch ext return operands
---------------------------------------------------------------------------------
2 0 > INIT_ARRAY ~0
1 ASSIGN !0, ~0
3 2 ASSIGN_DIM !0, 'key1'
3 OP_DATA 'some+value', $3
4 4 ASSIGN_DIM !0, 'key2'
5 OP_DATA !1, $5
5 6 > RETURN 1
答案 2 :(得分:0)
基于以下代码:
<?php
$start=time();
for($i=0;$i<10000000;$i++)
{
$data = array(
'key1' => 'some value',
'key2' => 3
);
}
$end=time();
$total=$end-$start;
echo "The operation took $total seconds to complete for brackets.";
$start=time();
for($i=0;$i<10000000;$i++)
{
$data = array(); // can be omitted
$data['key1'] = 'some value';
$data['key2'] = 3;
}
$end=time();
$total=$end-$start;
echo "The operation took $total seconds to complete for keys.";
?>
每个方法输出显示3秒。
答案:没有明显的性能差异:)
编辑:
我还复制了代码并通过CLI在一台可怕的老旧PC上运行它(也将每个循环增加到100万次迭代),结果如下:
第一种方法52秒,第二种方法59秒。所以,如此微小的差异,但是在一亿次迭代中,它几乎可以用到你想要的任何东西:)