Последние записи
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
12th
Фев
Сортировка нескольких масивов
Posted by Chas under php
Собственно вопрос, есть у меня например 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
…..
каким образом это можно реализовать?
Greblin
<?
function modifyArray(&amp;amp;$array, $index) {
foreach ($array as $key => $value) {
$array[$key] = array("array" => $index, "key" => $key, "value" => $value);
}
}
//функция модифицирует исходный массив, так чтобы каждый его
//элемент содержал информацию, в каком массиве он был и под каким номером
function mySort($a, $b) {
if ($a["key"] == $b["key"]) {
return $a["array"] < $b["array"] ? -1 : $a["array"] == $b["array"] ? 0 : 1;
}
else
return $a["key"] < $b["key"] ? -1 : 1;
}
//пользовательская функция сравнения элементов
//если у элементов были одинаковые индексы, то "меньше" (т.е. в отсортированном
//массиве он должен быть раньше) тот, у которого номер массива-источника меньше
//иначе тупо сравниваем индексы
$mas1 = array(5, 4, 2, 6, 8, 23, 25);
$mas2 = array(3, 6, 7, 2);
$mas3 = array(3, 8, 2, 7, 4, 7);
$mas4 = array();
$mas5 = array(1, 2, 94, 5, 34);
modifyArray($mas1, 1);
modifyArray($mas2, 2);
modifyArray($mas3, 3);
modifyArray($mas4, 4);
modifyArray($mas5, 5);
//модифицируем наши массивы
$merge = array_merge($mas1, $mas2, $mas3, $mas4, $mas5);
//слияние массивов
usort($merge, "mySort");
//сортировка массива с пользовательской функцией сравнения элементов
foreach ($merge as $m) {
echo $m["array"]." => ".$m["value"]."<br />";
}
?>
Можно было в функции и не использовать передачу по ссылке, но тогда в памяти создалась бы копия исходного массива. Так как наша цель менять именно исходный массив, то передавая по ссылке мы экономим память. Хотя это скорее дело вкуса. Можно было бы её и так написать
function modifyArray($array, $index) {
foreach ($array as $key => $value) {
$array[$key] = array("array" => $index, "key" => $key, "value" => $value);
}
return $array;
}
$mas1 = modifyArray($mas1, 1);
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)