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);
 }
Example #2
0
 /**
  * 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;
 }