Prova questo. Senza alcuna garanzia.
Codice PHP:
<?php
function pippo(&$array) {
//---- Salva l'array come json per avere una stringa
$before = json_encode($array);
//---- Ricerca del massimo
$max = 0;
$arrMax = array();
foreach($array as $key => $subarray) {
if (count($subarray) == 0) continue;
$temp = max($subarray);
if ($temp > $max) $max = $temp;
$arrMax[$key] = $temp;
}
//---- Cancellazione degli array che non contengono il valore massimo
foreach($array as $key => $subarray) {
if (count($subarray) == 0) continue;
if ($arrMax[$key] != $max ) unset($array[$key]);
}
//---- Cancellazione dei valori massimi
foreach($array as $key => $subarray) {
foreach($subarray as $key2 => $value) {
if($value == $max) unset($subarray[$key2]);
}
$array[$key] = $subarray;
}
//---- Salva l'array come json per avere una stringa
$after = json_encode($array);
//---- Se ci sono differenze tra prima e dopo si passa al passo successivo
if ($after != $before && count($array)>1) pippo($array);
//---- Torna gli indici dei posti rimanenti => i migliori
$return = array();
foreach($array as $key => $subarray) $return[] = $key;
return $return;
}$array = array();
$array[0] = [1, 2, 4, 6];
$array[1] = [1, 2, 5, 6];
$array[2] = [1, 2, 6];
$array[3] = [1, 3, 5, 6];
$array[4] = [1, 3, 5];
$array[5] = [1, 3, 5, 6];
var_dump(pippo($array));