示例#1
0
 public function test_merge_recursive()
 {
     $arr1 = ['key1' => 'will be rewrite to array', 'key2' => ['will be', 'rewrite to', 'k2' => 'string'], 'key3' => ['k3' => 'sub', 'k4' => 'array', 1, 2], 'nums' => [1 => 14, 3 => 32, 5 => 53], 'key4' => 'unique value'];
     $arr2 = ['key1' => ['str', 'rewrite with', 'new value'], 'key2' => 'array rewrite to a new string', 'key3' => ['k3' => 'new sub', 'k5' => 'here', 3, 4], 'nums' => [0 => 4, 2 => 27, 4 => 46]];
     $arr = Arrays::merge_recursive($arr1, $arr2, false);
     $expect = ['key1' => ['str', 'rewrite with', 'new value'], 'key2' => 'array rewrite to a new string', 'key3' => ['k3' => 'new sub', 'k4' => 'array', 0 => 1, 1 => 2, 'k5' => 'here', 2 => 3, 3 => 4], 'nums' => [1 => 14, 3 => 32, 5 => 53, 6 => 4, 7 => 27, 8 => 46], 'key4' => 'unique value'];
     $this->assertEquals($expect, $arr, 'Рекурсивное объединение массивов. Не сохраняем числовые ключи.');
     $arr = Arrays::merge_recursive($arr1, $arr2, true);
     $expect = ['key1' => ['str', 'rewrite with', 'new value'], 'key2' => 'array rewrite to a new string', 'key3' => ['k3' => 'new sub', 'k4' => 'array', 0 => 3, 1 => 4, 'k5' => 'here'], 'nums' => [1 => 14, 3 => 32, 5 => 53, 0 => 4, 2 => 27, 4 => 46], 'key4' => 'unique value'];
     $this->assertEquals($expect, $arr, 'Рекурсивное объединение массивов. Сохраняем числовые ключи.');
 }
示例#2
0
文件: Form.php 项目: VijitCoder/Kira
 /**
  * Свое значение в массив валидированных данных.
  *
  * Если значение нужно разместить в многоуровневом массиве, пишем всю вложенность ключей и новое значение на нужном
  * уровне. Старое значение будет переписано, если оно есть.
  *
  * Наличие поля не проверяется, что дает больше возможностей для управления массивом итоговых данных.
  *
  * @todo это плохо или хорошо? С одной стороны, можно добавить что-то после валидации, например, спец.данные,
  * нужные программисту. С другой же стороны, ошибка кодера в имени поля может оказаться незамеченной.
  *
  * @param array $value ключ => начение
  */
 public function setValue($value)
 {
     $this->values = Arrays::merge_recursive($this->values, $value);
 }