если, иначе, если, еще останавливается в середине других - PullRequest
0 голосов
/ 27 октября 2011

У меня есть следующий код:

$result = mysql_query("select * from ${db_name}_users limit 1");
while ($row = mysql_fetch_array($result, MYSQL_NUM)) 
{
    if ($player[$ships_killed] == 1) 
        echo "1";
    else if ($player[$ships_killed] == 2) 
        echo "2";
    else if ($player[$ships_killed] == 3) 
        echo "3";
    else if ($player[$ships_killed] == 4) 
        echo "4";
    else if ($player[$ships_killed] == 5) 
        echo "5";
    else if ($player[$ships_killed] =< 10) 
        echo "10";
    else if ($player[$ships_killed] =< 15) 
        echo "15";
    else if ($player[$ships_killed] =< 20) 
        echo "20";
    else 
        echo "Over Range";    
}   

У меня проблемы со знаками less than or equal, они не показывают правильное значение.Например, когда в поле отображается «11», вместо него отображается «Over Range».

Моя проблема в том, что конкретное поле сильно увеличивается, и я не могу покрыть каждое отдельное значение регистром равных.не хочу выводить значение напрямую.

Есть ли обходной путь?

Ответы [ 5 ]

7 голосов
/ 27 октября 2011

Менее чем равно написано так <=, сэр.

1 голос
/ 27 октября 2011

немного более разумный подход

$kills = $player[$ships_killed];

if($kills] < 6) echo $kills;
elseif($kills < 21) echo ceil($kills/5)*5;
else  echo "Over Range";

как для вашего

нумерованные значения будут в конечном итоге заменены на изображение, например echo "", поэтому я не хочу отображать значение напрямую.

это утверждение не имеет смысла. Вы можете сделать эту часть более разумным способом, используя переменную , чтобы установить правильное имя изображения. Вы должны научиться программированию. Довольно сложно использовать PHP без навыков программирования. Однако возможно.

1 голос
/ 27 октября 2011

Вот что я думаю ваш код должен быть:

// I assume you have a DB called '$db_name' and it has a table called 'users'
// If that's not the case, that's probably what it should be
if (!$result = mysql_query("SELECT * FROM $db_name.users LIMIT 1")) exit('MySQL query error!');

while ($row = mysql_fetch_assoc($result)) {

  // Anything in this array, we echo the exact number
  $exactMatches = array(1,2,3,4,5);

  // I assume your actually want to use $row['ships_killed'] to compare,
  // otherwise there is no apparent point to your database query...
  if (in_array($row['ships_killed'],$exactMatches)) {
    // Echo the number and skip to the next row
    // There is only one row at the moment, but your query is so simple
    // that I presume it is not finished
    echo $row['ships_killed'];
    continue;
  }

  // I would have though you want to display the number below the actual number,
  // not the one above it. For example if I have killed 8, you would show 5, not
  // 10 - the code below reflects this

  // If we get this far, there was no exact match
  if ($row['ships_killed'] >= 20) echo "20";
  else if ($row['ships_killed'] >= 15) echo "15";
  else if ($row['ships_killed'] >= 10) echo "10";
  else echo "5";

}
1 голос
/ 27 октября 2011

Первая проблема - знак =<, что неверно. Попробуйте использовать <= вместо.

Кроме того, вместо использования вложенного if можно использовать оператор switch, возможно, со счетчиком.

switch ($player[$ships_killed])
{
    case "1": echo "1";
    ...
}

Тесло.

1 голос
/ 27 октября 2011

Вы поменяли знак = и <, он должен быть таким: <= или >=.Для получения дополнительной информации: http://php.net/manual/en/language.operators.comparison.php.

Между прочим, я думаю, что вам было бы лучше использовать здесь выражение switch .

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