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);
 | |
|     }
 | |
| } |