PHP генерировать массив () из цикла? - PullRequest
9 голосов
/ 19 марта 2011

Я только что написал, это самый эффективный способ добавления массивов в существующий массив.


$c=4;
$i=1;
$myarray = array();

while($i <= $c):
    array_push($myarray, array('key' => 'value'));
    $i++;
endwhile;

echo '<pre><code>';
var_dump($myarray);
echo '
';

Обновление: Как бы вы нажали клавишу и значение, не создавая новый массив.так что это array_push($myarray,'key' => 'value');не это array_push($myarray, array('key' => 'value'));

Ответы [ 5 ]

18 голосов
/ 19 марта 2011

В вашем коде есть пара вещей, которые можно улучшить:

Волшебные числа

Это плохая практика назначать магические числа, такие как 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');
}
5 голосов
/ 19 марта 2011

Я лично сделал бы следующее, посмотрев на ваш код:

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

Согласно this , array_push немного менее эффективен, чем $myarray[]

3 голосов
/ 19 марта 2011

Если вам действительно нужно поместить в массив только определенное значение n раз, начиная с определенного индекса, вы можете просто использовать array_fill:

$myarray = array_fill($i, $c, array('item' => '1 items'));
2 голосов
/ 19 марта 2011

Ваш пример мне подходит, хотя вы, скорее всего, заменили бы свой array_push вызов функции на:

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

Какой "является" сокращенным синтаксисом для array_push.

Обновление: Для ассоциативного массива вы просто делаете:

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

Хотя в вашем примере вы просто перезаписываете значение на каждой итерации.

0 голосов
/ 19 ноября 2015
for($i=1; $i < 10; $i++) {
    $option[$i] = $i;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...