PHP从循环生成Array()?
Posted
技术标签:
【中文标题】PHP从循环生成Array()?【英文标题】:PHP Generate Array() from loop? 【发布时间】:2011-07-18 13:28:46 【问题描述】:我刚刚写了这个,这是将数组添加到预先存在的数组的最有效方法吗?
$c=4;
$i=1;
$myarray = array();
while($i <= $c):
array_push($myarray, array('key' => 'value'));
$i++;
endwhile;
echo '<pre><code>';
var_dump($myarray);
echo '</code></pre>';
更新:如何在不创建新数组的情况下推送键和值。
所以这个array_push($myarray,'key' => 'value');
不是这个array_push($myarray, array('key' => 'value'));
【问题讨论】:
【参考方案1】:您的代码有一些可以改进的地方:
幻数
分配像 4 和 1 这样的幻数是一种不好的做法,请改用常量。对于这个例子来说,这当然是矫枉过正,但了解和使用仍然很重要。
缺少大括号
始终使用大括号,它使代码更具可读性。
while循环的错误使用
这不是while循环的情况,如果你想循环一定次数,总是使用for循环!
array_push 的不必要使用
您不需要数组推送来向数组添加元素,您可以并且应该使用速记函数。
结果:
define('START', 1);
define('END', 4);
$myArray = array();
for ($i = START; $i < END; $i++)
$myArray[] = array('item' => '1 items');
【讨论】:
不要Always use the curly braces
,在添加内联 php 代码时使用替代语法,否则你只会让试图找出哪个花括号关闭哪个块的人感到沮丧。 (因为团队中总有人编辑在代码中放置随机选项卡)
@mhitza:确实。不过,内联 PHP 代码不应该经常发生。
@markus ,我怎样才能对 foreach 做同样的事情。如果你能帮忙就太好了。谢谢【参考方案2】:
查看您的代码,我会亲自执行以下操作:
$myarray = array();
for($i=0;$i<4;$i++)
$myarray[] = array('item' => '1 items');
根据this,array_push 的效率比$myarray[]
略低
【讨论】:
【参考方案3】:如果您真的只需要从某个索引开始将某个值 n 次放入数组中,您可以使用 array_fill
:
$myarray = array_fill($i, $c, array('item' => '1 items'));
【讨论】:
【参考方案4】:您的示例对我来说看起来不错,尽管您很可能会将您的 array_push
函数调用替换为:
$myarray[] = array('item' => '1 items');
哪个“是”array_push 的简写语法。
更新: 对于关联数组,您只需这样做:
$myarray["item"] = "1 items";
尽管在您的示例中,您只会在每次迭代时覆盖该值。
【讨论】:
听起来不错,如果我只想添加项目而不是数组,我可以执行 $myarray[] = 'item' , '1 items'; / 正确吗? @kr1zmo:您可能会收到该代码的错误。也许你的意思是$myarray['item'] = '1 items'
?
不,每个作业都是独立的。
如何将它推入数组 'item' => '1 items' 而不创建一个全新的数组来放置它而不是这个数组('item' => '1 items')
我不明白这个问题。【参考方案5】:
for($i=1; $i < 10; $i++)
$option[$i] = $i;
【讨论】:
以上是关于PHP从循环生成Array()?的主要内容,如果未能解决你的问题,请参考以下文章