/** @test */ public function isList() { $this->assertTrue(Arr::isList([1, 2, 3])); $this->assertTrue(Arr::isList([0 => 1, 1 => 2, 2 => 3])); $this->assertFalse(Arr::isList(['a' => 1, 'b' => 2])); $this->assertFalse(Arr::isList([1 => 1, 2 => 2, 3 => 3], true)); $this->assertFalse(Arr::isList(["0" => 1, "1" => 2, "bla" => 3], true)); }
/** * doExctractParams * * @param array $params * @param int $indend * * @return string */ private function doExctractParams(array $params, $indent = 0) { $array = []; foreach ($params as $param => $value) { if (is_array($value)) { $value = $this->doExctractParams($value, $indent + 4); } elseif (is_string($value) && 0 === strpos($value, '$this')) { $value = $value; } else { $value = $this->exportVar($value); } $key = $this->exportVar($param); $array[$key] = sprintf('%s%s => %s,', $this->indent($indent), $key, $value); } if (empty($array)) { return '[]'; } $flat = sprintf("[\n%s\n%s]", implode("\n", $array), $this->indent(max($indent - 4, 0))); if (Arr::isList($array, true)) { return preg_replace('#\\d+ \\=\\>\\s?#i', '', $flat); } return $flat; }
/** * appendDomList * * @param NormalizerInterface $normalizer * @param \DOMDocument $dom * @param mixed $node * @param mixed $key * @param mixed $value * * @return bool */ protected function appendDomList(NormalizerInterface $normalizer, \DOMDocument $dom, $node, $key, $value) { if (!Arr::isList($value, true)) { return false; } if (($useKey = ($skey = $this->inflect($key)) && $key !== $skey) || null !== $this->indexKey) { $parentNode = $dom->createElement($key); if (!$useKey) { $parentNode = $dom->createElement($key); $this->buildXmlFromTraversable($dom, $parentNode, $value); } else { foreach ($value as $arrayValue) { $this->appendDOMNode($dom, $parentNode, $skey, $arrayValue); } } return $node->appendChild($parentNode); } // if anything fails, append the domnodes directly. foreach ($value as $arrayValue) { $this->appendDOMNode($dom, $node, $this->inflect($normalizer->normalize($key)), $arrayValue); } return true; }
/** * valueIsList * * @param mixed $value * * @return bool */ public function valueIsList($value) { return is_array($value) && Arr::isList($value, true); }