PHP переменные массы из SQL-запроса - PullRequest
2 голосов
/ 12 января 2012

У меня есть этот раздел моего PHP-скрипта, который перебирает набор записей и сохраняет данные в переменных.

 $sql_result5 = mysql_query("SELECT * FROM turfs WHERE city = '$city'", $db); $query++;
 while ($rs5 = mysql_fetch_array($sql_result5)) { 
    if ($rs5[plot] != "") {
       ${$rs5[plot].'_exist'} = 1; 
       ${'$p_color_'.$rs5[plot]} = $rs5[color]; 
       ${$rs5[plot].'_1'} = $rs5[color1]; 
       }
    }

Затем я использую эти данные для заполнения сетки 20x20, чтобы цикл проходил через 400 записей, хранящих данные для каждой, и для каждой записи (ячейка в сетке) должно быть около 5 или около того переменных.

Разве это плохая идея создавать так много переменных? Есть лучший способ сделать это? Может быть, массив?

Ответы [ 2 ]

3 голосов
/ 12 января 2012

Создание переменных, как вы уже сделали, не лучший способ сделать это. Вместо этого либо используйте array, либо создайте сетку в цикле while.

Создать массив

$sql_result5 = mysql_query("SELECT * FROM turfs WHERE city = '$city'", $db);
$query++;
while($rs5 = mysql_fetch_array($sql_result5)){
 if($rs5[plot]){
  $plot[$rs5[plot]] = array(
   'color' => $rs5[color],
   'color1' => $rs5[color1],
  );
 }
}

Тогда ...

foreach($plot as $this_plot){
 $color = $this_plot['color'];
 $color1 = $this_plot['color1'];
 // Do something here
}

Или создать сетку в while

$sql_result5 = mysql_query("SELECT * FROM turfs WHERE city = '$city'", $db);
$query++;
while($rs5 = mysql_fetch_array($sql_result5)){ 
 if($rs5[plot]){
  $color = $rs5['color'];
  $color1 = $rs5['color1'];
  // Do something here
 }
}
0 голосов
/ 12 января 2012
$sql_result5 = mysql_query("SELECT * FROM turfs WHERE city = '$city'", $db); $query++;
$plots = array();
$i = 0;
while ($rs5 = mysql_fetch_array($sql_result5)) {  
    $plots[$i] = $rs5;    
    $i++;
} 

//Then when you're rendering...
$i=0;
foreach($plots as $space)
{
    $space['color'];
}

Все зависит от того, как вы хотите опубликовать информацию.Вы можете создать 2D массив, но для ваших целей я не думаю, что это необходимо.Вам просто нужно создавать новую строку каждые 20 пунктов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...