[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ERROR Division by zero
arbuzmaster
Подскажите пожалуйста как исправить ошибку?

94 if($playback_duration !=="0" or $playback_duration !=="-1" or $playback_duration !=="")
95 {
96 $percentage_float=($playback_position/$playback_duration)*100;
97 $percentage=round($percentage_float);
}
else {$percentage="0";}

в apache error.log

PHP Warning: Division by zero in /var/www/modules/dune_hd/get_status.php on line 96


_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
T1grOK
Деление на ноль. Ай-ай-ай!

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
arbuzmaster
понятно что Ай-ай-ай! Вроде не должно происходить
if($playback_duration !=="0" or $playback_duration !=="-1" or $playback_duration !=="") 
а происходит?

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
sergeiss
Цитата (arbuzmaster @ 5.04.2015 - 23:11)
Подскажите пожалуйста как исправить ошибку?

Блок try-catch тебе в руки smile.gif

А заодно почитай, как же именно сравниваются данные при использовании "===" и "!==" http://php.net/manual/ru/language.operators.comparison.php

PS. Кстати. Опиши словами, как ПХП, по твоему мнению, должен провести указанное тобой сравнение. Разберём это, и ты поймешь, в чем ты не прав и почему происходит то, что происходит.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
volter9
sergeiss
Цитата (sergeiss @ 5.04.2015 - 23:20)
Блок try-catch тебе в руки

Это warning, try-catch работает только на исключениях.
Оператор "собака" (@) тебе в руки :)

arbuzmaster
Попробуй так:
if (!empty($playback_duration) && (int)$playback_duration !== -1) {
$percentage_float = ($playback_position / $playback_duration) * 100;
$percentage = round($percentage_float);
}
else {
$percentage="0";
}


UPD: Поменял || на &&

_____________
Мой блог
arbuzmaster
PS. Кстати. Опиши словами, как ПХП, по твоему мнению, должен провести указанное тобой сравнение. Разберём это, и ты поймешь, в чем ты не прав и почему происходит то, что происходит.

В общих чертах как то так - если в $playback_duration (0 , -1, или пустота ) то $percentage="0" а если не (0 , -1, или пустота ) то производим вычисление $percentage.

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
sergeiss
Цитата (arbuzmaster @ 6.04.2015 - 00:09)
В общих чертах как то так...

Это в общих чертах :) А на самом деле как? Что именно происходит при разных вариантах сравнения?

if($playback_duration !=="0" ) // 1

if($playback_duration != "0" ) // 2

if($playback_duration !== 0 ) // 3

if($playback_duration != 0 ) // 4


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
arbuzmaster
if (!empty($playback_duration) || (int)$playback_duration !== -1) {
$percentage_float = ($playback_position / $playback_duration) * 100;
$percentage = round($percentage_float);
}
else {
$percentage="0";
}


и

try{
$percentage_float=($playback_position/$playback_duration)*100;
$percentage=round($percentage_float);
}
catch (Exception $e) {$percentage="0";}


PHP Warning:  Division by zero in /var/www/modules/dune_hd/get_status.php on line 96

может я что то не так делаю?

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
arbuzmaster
попробовал все
if($playback_duration !=="0" ) // 1

if($playback_duration != "0" ) // 2

if($playback_duration !== 0 ) // 3

if($playback_duration != 0 ) // 4

результат
PHP Warning:  Division by zero


_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
arbuzmaster
Преобразование типов не происходит при использовании === или !== так как в этом случае кроме самих значений сравниваются еще и типы.

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
arbuzmaster
короче я никак не вкурю!!
echo $playback_duration;

выхлоп
 0 

if($playback_duration ==="0" )  
{
$percentage="0";
}
else
{
$percentage_float=($playback_position/$playback_duration)*100;
$percentage=round($percentage_float);
}

и
if($playback_duration ===0 )  
{
$percentage="0";
}
else
{
$percentage_float=($playback_position/$playback_duration)*100;
$percentage=round($percentage_float);
}


PHP Warning:  Division by zero



а вот так работает
if($playback_duration ==0 )  
{
$percentage="0";
}
else
{
$percentage_float=($playback_position/$playback_duration)*100;
$percentage=round($percentage_float);
}

и
if($playback_duration =="0" )  
{
$percentage="0";
}
else
{
$percentage_float=($playback_position/$playback_duration)*100;
$percentage=round($percentage_float);
}

без ошибки
тогда почему наоборот не работает
if($playback_duration !==0 )  
{
$percentage_float=($playback_position/$playback_duration)*100;
$percentage=round($percentage_float);

}
else
{
$percentage="0";
}

PHP Warning:  Division by zero


_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.