[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Стандартные функции PHP
Igor_2020
Привет, хотел спросить - существуют ли некоторые стандартные функции в PHP которые опишу ниже, я написал свои функции которые обрабатывают данные как мне нужно, но как известно стандартные функции PHP обрабатывают данные быстрее чем свои.



$float=1.239;

/*
Округление дроби в меньшую сторону
floor не подходит - мне нужно округлить float по принципу round,
то есть round($float,2); выдаст 1.24, а мне нужно получить 1.23
*/


$float=1.231;

/*
Округление дроби в большую сторону
cell не подходит - мне нужно округлить float по принципу round,
то есть round($float,2); выдаст 1.23, а мне нужно получить 1.24
*/

//Class mysqli (Взял кусок кода из своего класса)


if($q=$this->mysql->query("Запрос SELECT")){
if($q->num_rows>0){
return $q->fetch_all(MYSQLI_ASSOC);
} else {
return [];
}
}


/*
Выполняется запрос - получаем массив данных, но данные все идут с типом string
Вопрос: можно ли как то изменить этот кусок кода $q->fetch_all(MYSQLI_ASSOC)
чтоб получить преобразованные по типу данные - то есть если столбец 'number' идёт int, то я его получу в массиве тоже int, а не string.
Если же столбец идёт double - то получаю float.
Есть ли стандартные методы чтоб получить такой вариант данных? чтоб я в дальнейшем не преобразовывал их сам floatval(значение), intval(значение) ?
*/


kirik
Привет!

С округлениями ничего такого в стандартных функциях нет. Более того, вы описали не округление до большего/меньшего, т.к. в случае с округлением до меньшего числа 1.24 с указанием точности 2, то это и будет 1.24. С точностью 1 - будет 1.2.

Я полагаю что вы запутались чутка и нужно из "floor(1.249, 2)" получить 1.24. Тогда фукнция типа
function myFloor(float $val, int $precision = 0): float
{
$x = 10 ** $precision;
return floor($val * $x) / $x;
}

почти не будет влиять на производительность, не переживайте :)

С запросом можете попробовать через prepared statements:
$stm = $mysqli->prepare("Запрос SELECT");
$row = $stm->execute()->get_result()->fetch_assoc();
var_dump($row);

Igor_2020
Цитата (kirik @ 2.06.2022 - 09:03)
С округлениями ничего такого в стандартных функциях нет. Более того, вы описали не округление до большего/меньшего, т.к. в случае с округлением до меньшего числа 1.24 с указанием точности 2, то это и будет 1.24. С точностью 1 - будет 1.2.

Я полагаю что вы запутались чутка и нужно из "floor(1.249, 2)" получить 1.24. Тогда фукнция типа
function myFloor(float $val, int $precision = 0): float
{
$x = 10 ** $precision;
return floor($val * $x) / $x;
}

почти не будет влиять на производительность, не переживайте :)[/php]

Спасибо, что написали функцию, мне просто хотелось узнать есть ли в PHP стандарт или нет.
Igor_2020
Цитата (kirik @ 2.06.2022 - 09:03)

С запросом можете попробовать через prepared statements:
[
php]$stm = $mysqli->prepare("Запрос SELECT");
$row = $stm->execute()->get_result()->fetch_assoc();
var_dump($row);

Буду тестировать, спасибо!
Быстрый ответ:

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