Web Мастерская
PHP: Дробное число без округления
В PHP есть функции:
Бывает появляется необходимость работать с дробями, но не округляя их, а оставляя так, как есть. Нашёл такое решение:
Кстати: Блог: Call to undefined function bcdiv().
Ещё вариант:
...
round | ceil | floor, которые округляют дробные числа, в большую или меньшую сторону, в зависимости от функции и самого числа. Удобно, да не всегда...Бывает появляется необходимость работать с дробями, но не округляя их, а оставляя так, как есть. Нашёл такое решение:
$n = bcdiv('1762.789', 1, 2); // 1762.78Кстати: Блог: Call to undefined function bcdiv().
Ещё вариант:
$n = floor(12.399 * 100) / 100; // 12.39- Жалоба
Call to undefined function bcdiv()
Для одной задачи, потребовалась функция:
В интернете найдено решение, выполнить команду:
Следует указать свою версию PHP....
bcdiv, но, при её использовании, получил ошибку: Uncaught Error: Call to undefined function bcdiv().В интернете найдено решение, выполнить команду:
sudo apt-get install php8.3-bcmathСледует указать свою версию PHP....
PHP: Как составить из строки элемент массива
Стояла задача, составить из получаемой строки элемент массива. Допустим, есть такой массив:
Функция принимает строку:
С решением помогли на Хабр:
Оказалось, всё просто! С каждой итерацией мы переходим к следующему "вложению" массива, подбираясь к нужному нам элементу.
Проверяем:
На экране видим:
А значит всё правильно.
Для решении мой задачи, так же, есть библиотека Array Dot Notation, но я выбрал решение выше....
$arr = [
'k1' => [
'k2' => [
'k3' => [
'k4' => 'v'
]
]
]
];Функция принимает строку:
k1/k2/k3, используя данную строку, необходимо отдать элемент массива: $arr['k1']['k2']['k3'].С решением помогли на Хабр:
<?php
$arr = [
'k1' => [
'k2' => [
'k3' => [
'k4' => 'v'
]
]
]
];
$s = "k1/k2/k3";
$array = explode('/', $s);
foreach ($array as $v)
{
$arr = $arr[$v];
}Оказалось, всё просто! С каждой итерацией мы переходим к следующему "вложению" массива, подбираясь к нужному нам элементу.
Проверяем:
print_r($arr);На экране видим:
['k4' => 'v']А значит всё правильно.
Для решении мой задачи, так же, есть библиотека Array Dot Notation, но я выбрал решение выше....
Как записать массив в файл на PHP
Для записи в файл, можно использовать функцию
Если указанного файла не существует, функция
Функция отлично пишет строки, но вот писать массивы не умеет. Чтобы записать массив в файл, при помощи
Теперь массив будет записан в файл, сохранив свою...
file_put_contents, которая и была создана для записи в файл. Пример:
// $file: Путь и имя файла, в который будет осуществляться запись
// $content: Текст / Код, который необходимо записать
file_put_contents($file, $content);Если указанного файла не существует, функция
file_put_contents его создаст. И если файл создан, функция его перезапишет.Функция отлично пишет строки, но вот писать массивы не умеет. Чтобы записать массив в файл, при помощи
file_put_contents, необходимо предварительно перевести "структуру" массива в строку. Сделать это можно функцией var_export, добавив второй необязательный параметр: true (true - возвращает представление переменной вместо его вывода):
// $file: Путь и имя файла, в который будет осуществляться запись
// $content: Массив, который необходимо записать в файл
$content = var_export($content, true);
file_put_contents($file, $content);Теперь массив будет записан в файл, сохранив свою...
Вложенная буферизация ob_start()
Мой движок использует буферизацию. При написании одного модуля (Блог: Обработать файл перед его получением на PHP) мне потребовалось добавить в уже существующею буферизацию, ещё одну. В интернете искал, как правильно сделать вложенную буферизацию и решение было найдено. Моя буферизация в буферизации выглядит так:
...
// Получение шаблона приложения
ob_start();
include (phpfox::getParam('core.dir_app') . $id . PHPFOX_DS . 'page' . PHPFOX_DS . $page . '.php');
$html = ob_get_clean();
// End: Получение шаблона приложения