[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Перемешать три массива
RockBoy
Добрый день.
Прошу помочь с сортировкой трех массивов.
На входе: три массива длиной от 0 до 10 элементов (А,В,С)
На выходе необходимо получить один массив D, который будет содержать в себе элементы из массивов (А,В,С) по следующему алгоритму:
1. Допустим каждый из массивов имеет длину 10 элементов, тогда результирующий массив D примет вид: D=[A0,B0,C0,A1,B1,C1,A2,B2,C2 и т.д.]
2. Допустим массив массив А длиной 10 символов, массив В - 3 символа, массив С - 1 символ.
Тогда результирующий массив D примет вид:
D=[A0,B0,C0,A1,B1,A2,B2,A3,A4,A5,A6,A7,A8,A9]

схематично цикл будет выглядеть так:
for ($i=0;$i<(sizeof($A)+sizeof($B)+sizeof($C));$i++) {
if ...
}

Заранее благодарю. rolleyes.gif



Спустя 1 час, 6 минут, 26 секунд (14.07.2012 - 09:28) pak написал(а):
у меня получилось как так:

$a = array('a1','a2','a3','a4','a5');
$b = array('b1','b2','b3');
$c = array('c1','c2','c3','c4','c5','c6','c7','c8');
$max = max(count($a), count($b), count($c));

for($i = 0; $i <= $max; $i++)
{
if($a[$i])
$arr[] = $a[$i];
if($b[$i])
$arr[] = $b[$i];
if($c[$i])
$arr[] = $c[$i];
}

print_r($arr);

Результат:

Array
(
[0] => a1
[1] => b1
[2] => c1
[3] => a2
[4] => b2
[5] => c2
[6] => a3
[7] => b3
[8] => c3
[9] => a4
[10] => c4
[11] => a5
[12] => c5
[13] => c6
[14] => c7
[15] => c8
)

Спустя 27 минут, 29 секунд (14.07.2012 - 09:55) RockBoy написал(а):
pak
спасибо большое, именно этого не хватало для счастья wink.gif

Спустя 4 часа, 51 минута, 46 секунд (14.07.2012 - 14:47) walerus написал(а):
pak я бы добавил проверку существования элемента, а то Notice: Undefined offset:... не оберешься )

$a = array('a1','a2','a3','a4','a5');
$b = array('b1','b2','b3');
$c = array('c1','c2','c3','c4','c5','c6','c7','c8');
$max = max(count($a), count($b), count($c));

for($i = 0; $i <= $max; $i++)
{
if( isset( $a[$i] ) )
$arr[] = $a[$i];
if( isset( $b[$i] ) )
$arr[] = $b[$i];
if( isset( $c[$i] ) )
$arr[] = $c[$i];
}

print_r($arr);

Спустя 1 минута, 51 секунда (14.07.2012 - 14:49) pak написал(а):
walerus
согласин)

Спустя 5 часов, 5 минут, 32 секунды (14.07.2012 - 19:54) RockBoy написал(а):
walerus
спасибо, добавим
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.