/** * @param array|object $map * @return array */ function mapAsArray($map) { if (is_array($map)) { return $map; } elseif (!is_object($map)) { throw new \InvalidArgumentException('A map must be an array or an object.'); } elseif ($map instanceof \Iterator) { return iterator_to_array($map); } elseif ($map instanceof \Traversable) { $array = []; foreach ($map as $key => $value) { $array[$key] = $value; } return $array; } return extractObjectVars($map); }
/** * @param mixed $value * @return \Closure */ function hasValue($value) { return function ($item) use($value) { if (!is_array($item) && !is_object($item)) { return false; } /** @var object|array $item */ if (is_object($item)) { $clone = clone $item; unset($item); $clone instanceof \Traversable or $clone = extractObjectVars($clone); $item = $clone; } foreach ($item as $element) { if ($element === $value) { return true; } } return false; }; }