2013-05-13 3 views
0

Хорошо, у меня есть массив из запроса сервера на игровом сервере, на котором хранится информация. Я сделал индикатор выполнения, который показывает текущее количество игроков. Процент этого прогресс бар рассчитывается как этотДеление на ноль с массивами

<span style="width: ' . $data['gq_numplayers']/$data['gq_maxplayers'] * 100 . '%;"></span> 

Теперь, если сервер отключился я получаю проблемы, как массив пуст, и разделение будет 0/0 и вызывает ошибку. Как мне обходить/разрешать это?

+1

Вы просто должны быть в состоянии проверить ', если ($ данных) {эхо .. .} '... – brbcoding

+0

Всегда используйте' isset ($ var); 'или array_key_exists (где $ var = $ data ['gq_numplayers'] в этом случае), если вы чувствуете, что переменная потенциально не будет установлена. Это хорошие стандарты кодирования. Игнорировать любой ответ, который не включает проверку – Mwayi

ответ

5

Возможно использование if заявления будет решением.

т.е.

if ($data['gq_maxplayers'] == 0) { 
    echo '<span style="width: 0%;"></span>'; 
} else { 
    echo '<span style="width: ' . $data['gq_numplayers']/$data['gq_maxplayers'] * 100 . '%;"></span>'; 
} 
+1

Почему этот ответ был отменен? –

+0

@Ed Heal Я использовал ваше решение, и я очень доволен результатом. – Amilo

+0

@Amilo - Ваш прием. –

1

Вы можете добавить if, чтобы проверить, не являются ли данные пустыми. Вы можете использовать array_key_exists('gq_numplayers', $data) для проверки наличия или отсутствия проблемы на сервере.

Если есть проблема, вы можете показать любое сообщение, которое хотите. Ниже приведен пример кода:

if (array_key_exists('gq_numplayers', $data)) { 
    <span style="width: ' . $data['gq_numplayers']/$data['gq_maxplayers'] * 100 . '%;"></span> 
} 
else { 
    // Do whatever you want. 
} 

0

использовать условно, чтобы вычислить процент. Вы можете использовать инлайн if

<span 
style="width: ' . $data['gq_numplayers']/
        (($data['gq_maxplayers'] != 0) 
        ? $data['gq_maxplayers'] 
        : 1) * 100 . '%;"></span> 
0

Сначала проверьте, если $data['gq_maxplayers'] равен 0, то вычислить ширину вашего элемента.

<?php $data['gq_maxplayers'] = ($data['gq_maxplayers'] == 0) ? 0 : $data['gq_maxplayers']; ?> 
<span style="width: ' . $data['gq_numplayers']/$data['gq_maxplayers'] * 100 . '%;"></span> 
1

Вместо munging значения, проверьте, чтобы увидеть, если знаменатель 0, прежде чем выполнить расчет. Если это 0, отобразите процент как 0%. Если значение знаменателя 0 является неожиданным, то вы, вероятно, захотите отобразить сообщение об ошибке или сказать, что данные недоступны. Например:

$percentage = 0; 
if ($data['gq_maxplayers'] > 0) { 
    $percentage = ($data['gq_numplayers']/$data['gq_maxplayers']) * 100; 
} 

echo '<span style="width: ' . $percentage . '%;"></span>"; 
0
<?php if ($data['gq_maxplayers']>0) { ?> 
    <span style="width: ' . $data['gq_numplayers']/$data['gq_maxplayers'] * 100 . '%;"></span> 
<?php } else{ ?> 
    <span style="width:0%;"></span> 
<?php } ?> 
+0

Вам нужно всего лишь проверить знаменатель –

+0

Согласовано. Редактирование. – vasanth

0

Вы можете даже сделать это рядные сокращенного путем ...

echo '<span style="width: ' . ($data['gq_maxplayers'] != 0 ? $data['gq_numplayers']/$data['gq_maxplayers'] * 100 : '0') . '%;"></span>'; 
Смежные вопросы