- mapujemy wartości
- z mapowanych wartości robimy chunki
- loop przez te chunki
- filtrujemy wartości chunku - jeśli true to true, jeśli false to false :)
- sprawdzamy liczbę pozostałych elementów chunku
- zapisujemy true jeśli count($filter) === 3 || count($filter) === 0
- false jeśli inaczej
$arr = [
"40" => '44',
"140" => '',
"240" => '21',
"44" => '23',
"144" => '',
"244" => '11',
"49" => '',
"149" => '',
"249" => '',
"119" => '',
"219" => '',
"319" => '',
];
// mapujemy - jeśli jest string jest większy od 0 czyli jeśli jest wartość w nim to zamieniamy na true jeśli nie ma to false
$mapped = array_map(function ($element) {
return strlen($element) > 0;
}, $arr);
// robimy chunki czyli dzielimy tablicę po 3 elementy
$chunked = array_chunk($mapped, 3, true);
$retrned = [];
// loop przez wszystkie chunki
foreach($chunked as $chunk => $element) {
// filtrujemy wartości - jeśli jest true to zostaje w tablicy
$filter = array_filter($element, function ($item) {
return $item;
});
// jeśli wszystkie były true albo wszystkie false to zwracamy true
if(count($filter) === 3 || count($filter) === 0) {
$returned[$chunk] = true;
} else {
$returned[$chunk] = false;
}
}
print_r($returned);
https://repl.it/@HubertLesiak/DarkvioletVictoriousBases
w $returned póżniej znajduje się
Array
(
[0] => false
[1] => false
[2] => true
[3] => true
)
ogólnie jak już to ma być jeden obiekt z tych 3 wartości to można też zrobić metodę sprawdzającą to w tym obiekcie :)
http://php.net/manual/pl/function.array-chunk.php
http://php.net/manual/pl/function.array-map.php
http://php.net/manual/pl/function.array-filter.php