Web Мастерская»Блог

Сообщество Web Мастеров. Тут собрано всё, чтобы написать свой первый сайт, запустить его в Интернет и поддерживать его в течении всей его работы.

PHP: Дробное число без округления

PHP
В PHP есть функции: 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()

Для одной задачи, потребовалась функция: bcdiv, но, при её использовании, получил ошибку: Uncaught Error: Call to undefined function bcdiv().

В интернете найдено решение, выполнить команду:
sudo apt-get install php8.3-bcmath

Следует указать свою версию PHP....

Как избавиться от наследования "opacity"

CSS
Известно, что CSS свойство opacity наследуется элементами, что находятся внутри элемента с данным свойством. Для потомственных элементов свойство поменять не выйдет, прописав их в ручную. Однако, если прозрачность необходима для фона, можно поменять:
.class {
	background: #FFFFFF;
	opacity: 0.6;
}

На:
.class {
	background: rgba(255, 255, 255, 0.5);
}

И прозрачность будет только у родителя....

Не использовать "cursor: pointer" если элемент "disabled"

Есть выбор из перечисленного:
<input type="radio" class="choice" id="choice1" name:"action" />
<label class="categorylabel" for="choice1">
	<div>
		<!-- -->
	</div>
</label>

<input type="radio" class="choice" id="choice2" name:"action" disabled />
<label class="categorylabel" for="choice2">
	<div>
		<!-- -->
	</div>
</label>

На одном input прописан: disabled (Запрет использовать). Стояла задача менять курсор при наведении на label, но не менять курсор, если элемент имеет: disabled. Для решения этой задачи использовался следующий CSS код:
input[type="radio"][disabled] {
  cursor: default;
}

input[type="radio"]:not([disabled]) + label {
  cursor: pointer;
}

Теперь, если у тега есть: disabled, курсор не меняется на указательный палец, остаётся стрелочкой....

PHP: Как составить из строки элемент массива

PHP
Стояла задача, составить из получаемой строки элемент массива. Допустим, есть такой массив:
$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, но я выбрал решение выше....