Piszemy klasę helpera do tablic, którego będziemy używać w naszym frameworku MVC, aby uporządkować sobie kod, podobnie jak robi to Laravel.
Na początku zobaczmy, jak działa funkcja array_slice, bo z jej pomocą napiszemy sobie take:
$input = array("a", "b", "c", "d", "e");
$output = array_slice($input, 0, 2);
print_r($output);
//[a,b]
Zaczęło od 0, wzięło 2. Teraz zacznijmy z negatywnym argumentem:
$input = array("a", "b", "c", "d", "e");
$output = array_slice($input, -2, 2);
print_r($output);
//[d,e]
Zaczęło 2 od końca i 2 wzięło. Pamiętamy jak działa wartość bezwzględna?
$input = array("a", "b", "c", "d", "e");
$output = array_slice($input, -2, abs(-2));
print_r($output);
//[d,e]
Odległość od punktu 0 na osi X (lub inaczej – zamienia minus na brak minusa jeśli minus).
Teraz mamy już wszystko, aby napisać naszą funkcję take:
<?php
class Arr{
public static function take($array, $limit)
{
if ($limit < 0) {
return array_slice($array, $limit, abs($limit));
}
return array_slice($array, 0, $limit);
}
}
$arr = ['a','b','c','d','e'];
print_r(Arr::take($arr, 2));
//[a,b]
print_r(Arr::take($arr, -2));
//[d,e]
Nasza metoda bierze określoną ilość elementów (jeżeli minus, zaczyna od końca).
Helpera będziemy rozwijać.