2015-07-01 3 views
4

Я пытаюсь создать массив, содержащий все нечетные числа от 1 до 20,000. Я использую var_dump() в конце для отображения значений массива без использования циклов.Поместите значение для цикла внутри массива

По какой-то причине это не сработает.

вот мой код до сих пор:

$array_variable = array(); 

for($i=1; $i<=20000; $i++){ 
    if($i%2 == 1){ // if the remainder after division `$i` by 2 is one{ 
     print_r($array_variable[$i]); // if odd, echo it out and then echo newline for better readability; 
    } 
} 

var_dump($array_variable); 
+0

вы не присвоить значение переменной –

+0

вы пытаетесь отобразить его без петель, но отображать его в 'for' петли в любом случае Кроме того, почему вы пытаетесь получить доступ к'? $ array_variable [$ i] 'в пустом массиве перед добавлением чего-либо в? – Huey

+0

Простая задача назначения – jagad89

ответ

7

Вы должны нажать значения в массив первых:

$array_variable = array(); 
for($i=1; $i<=20000; $i++){ 
    if($i%2 == 1){ 
     $array_variable[] = $i;// or array_push($array_variable, $i); 
    } 
} 
var_dump($array_variable); 

В противном случае ваш массив остается пустым.

4

Это приводит к большому количеству неопределенных индексов, потому что вы ничего не добавляете к $array_variable.

Измените код следующим образом:

$array_variable = array(); 

    for($i=1; $i<=20000; $i++){ 
     if($i%2 == 1){ // if the remainder after division `$i` by 2 is one{ 
     $array_variable[] = $i; // $array_variable[] means adding something to the array 
     } 
    } 

    var_dump($array_variable); //dump all odd numbers 

Для лучшей читаемости массива вы можете использовать:

echo "<pre>"; 
print_r($array_variable); 
echo "</pre>"; 
0

Ваш $ array_variable пуст, потому что вы никогда не добавлять элементы к нему. Попробуйте это вместо:

$array_variable = range(1, 20000, 2); 
+0

Привет, вы можете объяснить, как это работает? –

+0

range() - это функция PHP, которая генерирует массив, если вы даете ему начальное значение, конечное значение и, необязательно, приращение шаг. См. Также http://php.net/manual/en/function.range.php – unfairhistogram

0

$ array_variable = array();

for($i=1; $i<=20000; $i++){ 
    if($i%2 == 1){ // if the remainder after division `$i` by 2 is one{ 
     array_push($array_variable, $i); //Push the variable into array 
    } 
} 

var_dump($array_variable); //dump all odd numbers 
0

Вы пытаетесь напечатать элемент, которого он не существует, поскольку массив пуст. Если вы настаиваете на использовании массива, используйте этот код, вы заметите, что присваиваете значение элементам массива: (а также если вы хотите отобразить его на новой строке в браузере, используйте эхо-комментарий): (если вас интересует больше : what is the difference between echo and print_r

<?php 

     $array_variable = array(); 

     for($i=1; $i<=20000; $i++){ 
      $array_variable[$i]=$i;//assignment 
      if($i%2 == 1){ // if the remainder after division `$i` by 2 is one{ 
      print_r($array_variable[$i]); // if odd, echo it out and then echo newline for better readability; 
      //echo $array_variable[$i].'<br>'; 
     } 
    } 

     var_dump($array_variable); 
    ?> 
Смежные вопросы