php_components_pack/sources/traits/JsonReWriter/JsonReWriterDeleteTrait.php
2025-06-29 20:29:52 +03:00

69 lines
2.1 KiB
PHP

<?php
namespace goodboyalex\php_components_pack\traits\JsonReWriter;
/**
* Часть кода класса JsonReWriter, отвечающая за методы удаления ключей JSON.
*
* @author Александр Бабаев
* @package php_components_pack
* @version 1.0
* @since 1.1.0
*/
trait JsonReWriterDeleteTrait
{
/**
* Очистка данных JSON.
*
* @return void
*/
public function Clear (): void
{
// Очистка данных
unset($this->JsonData);
// Создание пустого массива
$this->JsonData = [];
}
/**
* Удаление ключа JSON.
*
* @param string $key Требуемый ключ JSON для удаления.
*
* @return bool Результат удаления ключа: <code>true</code> - удаление прошло успешно, <code>false</code> -
* произошла ошибка при удалении.
*/
public function DeleteKey (string $key): bool
{
// Очищаем ключ
$preparedKey = $this->PrepareKey($key);
// Проверка ключа
if (!$this->IsKeyExists($preparedKey))
// - ключ не существует
return false;
// Разбиваем ключ на части
$keys = $this->ParseKey($preparedKey);
// Получаем текущий массив данных
$current = &$this->JsonData;
// Если ключ не является корневым
if (count($keys) > 0)
// - переходим к вложенному массиву
for ($i = 0; $i < count($keys) - 1; $i++)
// -- и добавляем массив данных
$current = &$current[$keys[$i]];
// Получаем удаляемый ключ
$deleteKey = $keys[count($keys) - 1];
// Удаляем ключ
unset($current[$deleteKey]);
// Проверяем удаление
return $this->IsKeyExists($key);
}
}