public function testCanSetValues() { $array = array('foo' => array('foo' => 'bar'), 'bar' => 'bis'); $array = Arrays::set($array, 'foo.bar.bis', 'ter'); $this->assertEquals('ter', $array['foo']['bar']['bis']); $this->assertArrayHasKey('bar', $array); }
/** * Resolve values by collection. * * @param \SimpleXMLElement $content * @param array $uses * * @return array */ protected function parseValueCollection(SimpleXMLElement $content, array $uses) { $value = []; foreach ($uses as $use) { list($name, $as) = strpos($use, '>') !== false ? explode('>', $use, 2) : [$use, $use]; if (preg_match('/^([A-Za-z0-9_\\-\\.]+)\\((.*)\\=(.*)\\)$/', $name, $matches)) { if ($name == $as) { $as = null; } $item = $this->getSelfMatchingValue($content, $matches, $as); if (is_null($as)) { $value = array_merge($value, $item); } else { $value = Arrays::set($value, $as, $item); } } else { if ($name == '@') { $name = null; } $value = Arrays::set($value, $as, $this->getValue($content, $name)); } } return $value; }