Как сгруппировать / разбить этот массив массив в php N

0

вот результат моего print_t ($ array)

[0] => 1/000000.png
[1] => 1/0000FF.png
[2] => 1/66CC00.png
[3] => 1/CC66FF.png
[4] => 1/FF0000.png
[5] => 1/FF9900.png
[6] => 1/FFFFFF.png
[7] => 2/000000.png
[8] => 2/0000FF.png
[9] => 2/66CC00.png
[10] => 2/CC66FF.png
[11] => 2/FF0000.png
[12] => 2/FF9900.png
[13] => 2/FFFFFF.png
[14] => 3/000000.png
[15] => 3/0000FF.png
[16] => 3/66CC00.png
[17] => 3/CC66FF.png
[18] => 3/FF0000.png
[19] => 3/FF9900.png
[20] => 3/FFFFFF.png

Мне нужно сгруппировать этот массив, чтобы получить такой результат:

arr[0] = "000000.png, 000000FF.png, 66CC00.png, CC66FF.png, FF0000.png, FF9900.png, FFFFFF.png"
arr[1] = "000000.png, 000000FF.png, 66CC00.png, CC66FF.png, FF0000.png, FF9900.png, FFFFFF.png"
arr[2] = "000000.png, 000000FF.png, 66CC00.png, CC66FF.png, FF0000.png, FF9900.png, FFFFFF.png"
arr[3] = "000000.png, 000000FF.png, 66CC00.png, CC66FF.png, FF0000.png, FF9900.png, FFFFFF.png"

С уважением

Теги:
arrays

2 ответа

1
Лучший ответ

Поскольку вам нужна строка

foreach ($array as $value) {
    $result[dirname($value)] .= empty($result[dirname($value)]) ? basename($value) : ', ' . basename($value);
}
0

Попробуй это!

$array = ["1/000000.png", "1/0000FF.png", "1/66CC00.png", "2/000000.png", "2/0000FF.png", "2/66CC00.png", "3/000000.png", "3/0000FF.png", "3/66CC00.png"];

//Get the first group of array
for($i=0; $i<count($array); $i++){
    if(!$i){
        $new_array[] = substr($array[$i], 2);
        $firstChar = $array[$i][0];
    }else{
        if($firstChar == $array[$i][0]){
            $new_array[] = substr($array[$i], 2);
        }else{
          break;        
        }       
    }
}

//Array string
$array_string = implode(",", $new_array);

//Calculate the new length of array
$final_array_length = count($array)/$i;

//Prepare final array
$final_array = [];
for($j=0; $j<$final_array_length; $j++){
    $final_array[] = $array_string;
}

print_r($final_array);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню