Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Почему не корректно работает тернарный оператор в хаке?

Почему не корректно работает тернарный оператор в хаке?


     13.11.2021    Общие вопросы по PHP, Хаки    770

вопрос
Решил изменить вид рейтинга на сайте ( сделать его вида: 1К , 1М ). Здесь на сайте нашел хак от SANDER и решил применить его к рейтингу, но столкнулся с одной проблемой. Он не отображает "+" и "-". Перелопатил кучу инфы в сети. Решил попробовать сделать это с помощью тернарной операции ( [первый операнд - условие] ? [второй операнд] : [третий операнд] ) для этого заменил :
$rate = round($rate, 1);
    echo $rate . $amounts[$level]; 

на:
    $rate  = round($rate , 1);
    echo ($rate < 0) ? '-' .$rate : '+' .$rate  . $amounts[$level]; 

пробовал также вариант:
   $rate  = round($rate , 1);
   echo ((($rate < 0) ? '-' .$rate  : '+' .$rate  . $amounts[$level]) ? '-' .$rate : '+' .$rate  . $amounts[$level]); 

Получившийся код имел такой вид :
<?php
$amounts = [
	'',
	'К',
	'М',
	'B',
];

$level = 0;
$rate = preg_replace('/[^\d]/', '', $rate);
$rate = intval($rate);
while ($rate > 1000) {
	$rate = $rate / 1000;
	$level++;
}
    $rate  = round($rate , 1);
    echo ($rate < 0) ? '-' .$rate : '+' .$rate  . $amounts[$level]; 

Но вот незадача, ни в какую не хочет выполнятся условие. Вернее если условие соблюдается и рейтинг меньше нуля, то выводиться третий операнд и для рейтинга больше и для рейтинга меньше 0. Если же поменять условие на ($rate > 0), то почему то выводиться второй операнд тоже для обоих рейтингов. Почему так может происходить? Всю голову уже себе сломал. И вообще реализуемо ли это так? Или для этого нужно пробовать идти каким то другим путем .Буду признателен за любую подсказку.

Ответа пока нет


2 комментария

TeraMoune
Эксперт

TeraMoune - 14 ноября 2021 18:48 -

А у тебя $rate всегда положительное число.

rewenas
Юзер

rewenas - 15 ноября 2021 01:17 -

Упс... Излазил все, а в регулярное выражение заглянуть и не догадался) Спасибо!

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх