public function zip($array = null) { $arrays = self::_wrapArgs(func_get_args()); $num_arrays = count($arrays); if ($num_arrays === 1) { return self::_wrap($array); } $__ = new self(); $num_return_arrays = $__->max($__->map($arrays, function ($array) { return count($array); })); $return_arrays = $__->range($num_return_arrays); foreach ($return_arrays as $k => $v) { if (!is_array($return_arrays[$k])) { $return_arrays[$k] = array(); } foreach ($arrays as $a => $array) { $return_arrays[$k][$a] = array_key_exists($k, $array) ? $array[$k] : null; } } return self::_wrap($return_arrays); }