PHP从循环生成Array()?

时间:2011-03-19 00:16:35

标签: php arrays while-loop

我刚写了这个,这是将数组添加到预先存在的数组的最有效方法。


$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>';

更新:你如何推动关键&amp;值,不创建新数组 所以这array_push($myarray,'key' => 'value');
不是这个array_push($myarray, array('key' => 'value'));

5 个答案:

答案 0 :(得分:18)

您的代码有几个可以改进的地方:

魔数

分配像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');
}

答案 1 :(得分:5)

我个人会按照以下方式查看您的代码:

$myarray = array();
for($i=0;$i<4;$i++){
  $myarray[] = array('item' => '1 items');
}      

根据this,array_push的效率低于$myarray[]

答案 2 :(得分:3)

如果你真的只需要从某个索引开始将一个特定值放入数组n次,你可以使用array_fill

$myarray = array_fill($i, $c, array('item' => '1 items'));

答案 3 :(得分:2)

您的示例对我来说很好,尽管您很可能会将array_push函数调用替换为:

$myarray[] = array('item' => '1 items');

“is”是array_push的简写语法。

<强>更新 对于关联数组,您只需:

$myarray["item"] = "1 items";

虽然您的示例只是覆盖每次迭代的值。

答案 4 :(得分:-1)

for($i=1; $i < 10; $i++) {
    $option[$i] = $i;
}