69 lines
2.1 KiB
PHP
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);
|
|
}
|
|
} |