Array Util (Min, Max, Range, Zip, Uniq)

core/namespace/array-util-func/code/src/array-util.php:

<?php

namespace ArrayUtil;

function min($array): float
{
  $minValue = $array[0];

  for ($flag = 1; $flag < sizeof($array); $flag++) {
    if ($minValue > $array[$flag])
      $minValue = $array[$flag];
  }

  return $minValue;
}

function max($array): float
{
  $maxValue = $array[0];

  for ($flag = 1; $flag < sizeof($array); $flag++) {
    if ($maxValue < $array[$flag])
      $maxValue = $array[$flag];
  }

  return $maxValue;
}

function range($length, $last = null, $step = null)
{
  $begin = is_null($last) ? 0 : $length;
  $end = $last ?? $length;
  $step = $step ?? 1;
  $result = [];

  for ($number = $begin; $number < $end; $number += $step) {
    $result[] = $number;
  }

  return $result;
}

function zip(...$arrays)
{
  $result = [];
  for ($index = 0; $index < sizeof($arrays); $index++) {
    $values = [];
    for ($array = 0; $array < sizeof($arrays); $array++)
      $values[] = $arrays[$array][$index];
    $result[] = $values;
  }
  return $result;
}

function uniq($array)
{
  $result = [];
  foreach ($array as $value) {
    if (!in_array($value, $result))
      $result[] = $value;
  }
  return $result;
}

core/namespace/array-util-func/code/print/array-util.print.php:

<?php
require __DIR__ . '/../src/array-util.php';

// Array Util

// finding lowest value in [1, 4, 2, 6, 10, 3]

var_dump(min([1, 4, 2, 6, 10, 3]));
var_dump(1.0);

// finding lowest value in [1, 4, -1, 6, 10, 3]
var_dump(min([1, 4, -1, 6, 10, 3]));
var_dump(-1.0);

// finding greatest value in [1, 4, 2, 6, 10, 3]
var_dump(max([1, 4, 2, 6, 10, 3]));
var_dump(10.0);

// generating range of numbers from 0 to 10
var_dump(range(10));
var_dump([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);

// generating range of numbers from 1 to 11
var_dump(range(1, 11));
var_dump([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);

// generating range of numbers from 0 to 10 with steps
var_dump(range(0, 30, 5));
var_dump([0, 5, 10, 15, 20, 25]);

// generating zip of [\'moe\', \'larry\'] and [30, 40]
var_dump(zip(['moe', 'larry'], [30, 40]));
var_dump([['moe', 30], ['larry', 40]]);

// generating zip of [\'moe\', \'larry\', \'curly\'], [30, 40, 50] and [true, false, false]
var_dump(zip(['moe', 'larry', 'curly'], [30, 40, 50], [true, false, false]));
var_dump([['moe', 30, true], ['larry', 40, false], ['curly', 50, false]]);

// removing duplicate values in [1, 2, 1, 4, 1, 3]
var_dump(uniq([1, 2, 1, 4, 1, 3]));
var_dump([1, 2, 4, 3]);

// removing duplicate values in [1, 2, 1, 3, 3]
var_dump(uniq([1, 2, 1, 3, 3]));
var_dump([1, 2, 3]);

Response