20250629 1.1 Stable
This commit is contained in:
69
sources/traits/JsonReWriter/JsonReWriterDeleteTrait.php
Normal file
69
sources/traits/JsonReWriter/JsonReWriterDeleteTrait.php
Normal file
@@ -0,0 +1,69 @@
|
||||
<?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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user