Перейти к содержимому


Пользователь месяца
ShowPrint ShowPrint 1-й за Сентябрь
Очков активности: 283 2 темы, 21 сообщение, 7 баллов репутации
Сайт: ShowPrint.ru
ТОП самых активных за этот месяц
  • Фотография Medvedoc
    #1

    Medvedoc
    Очков активности: 456 8 тем, 52 сообщения, 4 балла репутации

  • Фотография ShowPrint
    #2

    ShowPrint (ShowPrint.ru)
    Очков активности: 300 Вне конкурса за определение пользователя месяца

  • Фотография BLIK
    #3

    BLIK
    Очков активности: 210 Вне конкурса за определение пользователя месяца

  • Фотография WGN
    #4

    WGN (worldgamenews.com)
    Очков активности: 84 Вне конкурса за определение пользователя месяца

  • Фотография Игорь Ку
    #5

    Игорь Ку (dudesday.ru)
    Очков активности: 76.5 4 темы, 5 сообщений, 3 балла репутации

  • Фотография Алексей111
    #6

    Алексей111 (xvideo24.ru)
    Очков активности: 66 8 тем, 20 сообщений, 1 балл репутации

  • Фотография Ixman
    #7

    Ixman (o5cat.ru)
    Очков активности: 58.5 0 тем, 13 сообщений, 3 балла репутации

  • Фотография yuran
    #8

    yuran (yurbol.ru)
    Очков активности: 37.5 1 тема, 22 сообщения, 1 балл репутации

  • Фотография Zevss
    #9

    Zevss (domles43.ru)
    Очков активности: 22.5 2 темы, 9 сообщений, 1 балл репутации

  • Фотография devpro
    #10

    devpro
    Очков активности: 13.5 0 тем, 9 сообщений, 1 балл репутации

  • Показать весь ТОП 10

Kwork.ru - услуги фрилансеров от 500 руб.

Поддержите форум! =)
Апдейты
  • Яндекс тИЦ: 26.09.2018
  • Яндекс выдача: 18.10.2018
Топ 5 участников по репутации


Сортировка нескольких масивов

#1 arashvg

arashvg
  • Неактивные
  • 6 сообщений
  • Репутация: 0
0

Отправлено 10 February 2012 - 12:59

Собственно вопрос, есть у меня например 5 разных масивов, которые содержат каждый разное количество элементов, сколько их в каждом масиве мне неизвестно, так как они формируются динамически в зависимости от входящих данных.
например в одном из случаев получается такая картина

$mas1 содержит 8 элементов
$mas2 содержит 2 элемента
$mas3 содержит 5 элементов
$mas4 содержит 0 элементов
$mas5 содержит 12 элементов

Моя задача отобразить все элементы масивов в таком порядке:
$mas1 элемент 1
$mas2 элемент 1
$mas3 элемент 1
$mas4 элемент 1
$mas5 элемент 1
$mas1 элемент 2
$mas2 элемент 2
$mas3 элемент 2
$mas4 элемент 2
$mas5 элемент 2
.....

каким образом это можно реализовать?
_______

как думал это сделать я:
1. Найти масив с наибольшим количеством элементов (как это сделать ума не приложу :)).
2. В создать новый масив ($allmas) цыкле начиная с 0 до числа найденного в первом пункте выполнять следующие действия:
если $mas1 элемент i<>'' добавить этот элемент к $allmas
если $mas2 элемент i<>'' добавить этот элемент к $allmas
.....
если $mas5 элемент i<>'' добавить этот элемент к $allmas
выходим из цикла, выводим масив $allmas.

Но как это сделать программно?

Дело в том что пхп только начал изучать и знаю его на уровне двойки с огромным минусом... если бы например на делфи нужно было такое написать, проблем бы невозникло ), а на ПХП, увы!!!

Помогите пожалуйста!

 

 

  • 0

#2 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 10 February 2012 - 18:38

Насколько я понял задачу... хотя уверен, что на этапе формирования массивов, она должна решаться проще:
<?php
$count = 3; // количество массивов
$max = 8; // кол-во элементов в самом большом массиве... получаем на этапе формирования массива
$arr1 = array(1,2,3,4,5,6,7,8);
$arr2 = array(9,10);
$arr3 = array(11,12,13,14,15);
$res = array(0 => $arr1, 1 => $arr2, 2 => $arr3); // итоговый массив
/* Логика вывода элементов итогового массива
00 | 10 | 20
01 | 11 | 21
02 | 12 | 22
03 |	| 23
*/
echo '<pre>';
print_r($res);
echo '</pre>';
for($i = 0; $i < $max; $i++){
  for($j = 0; $j < $count; $j++){
   if(!empty($res[$j][$i]))
   echo "Элемент $i: <b>" . $res[$j][$i].'</b><br>';
  }
echo '<hr>';
}
?>

  • 0


#3 unfixed

unfixed
  • Неактивные
  • 21 сообщений
  • Репутация: 5

Отправлено 10 February 2012 - 19:50

Вот еще вариант:

<?php
				// Данные массивы
				$arr0 = array('zero.zero', 'zero.one', 'zero.two', 'zero.three');
				$arr1 = array('one.zero', 'one.one');
				$arr2 = array('two.zero');
				// Общий массив
				$array = array($arr0, $arr1, $arr2);
				// Определение наибольшего элемента в данных массивах
				$max = 0;
				for ($i = 0; $i < count($array); $i++) {
						if (count($array[$i]) >= $max) $max = count($array[$i]);
				}
				// Вывод
				for ($i = 0; $i < $max; $i++) {
						echo 'Итерация №'.$i.'<br />'; // Для наглядности при выводе
						for ($j = 0; $j < count($array); $j++) {
								if ($array[$j][$i]) echo $array[$j][$i].'<br />';
						}
				}
?>

В итоге выводит:

Итерация №0
zero.zero
one.zero
two.zero
Итерация №1
zero.one
one.one
Итерация №2
zero.two
Итерация №3
zero.three


  • 0



Похожие темы

  Название темы Автор Статистика Последнее сообщение

Оформление форума – IPBSkins.ru