#php #arrays
#php #массивы
Вопрос:
Итак, я хотел бы взять «несортированный» массив и получить каждый второй элемент из «несортированного» массива и поместить его в новый массив, так что осталось два массива.
$unsorted = array("present","Bob","late","Jessie","late","Carl","present","Jessica","absent","Adam","present","Hope");
Я думал о создании for
цикла, но не смог найти никаких функций для создания двух массивов.
Любая помощь будет с благодарностью принята, спасибо!
Комментарии:
1. Что вы сделали до сих пор?
2. Это не сортировка. Сортировка приводит массив в порядок.
3. Почему
for
цикл не работает? Если индекс четный, поместите элемент в первый массив. Если это нечетно, поместите элемент во второй массив.4. Зачем вам два массива? Похоже, это должен быть ассоциативный массив, например
["Bob" => "present", "Jessie" => "late", ...]
5. Почему бы не создать его как ассоциативный массив в первую очередь, вместо чередования подобным образом?
Ответ №1:
Одним из вариантов является использование классического foreach
цикла.
$unsorted = array("present","Bob","late","Jessie","late","Carl","present","Jessica","absent","Adam","present","Hope");
$array1 = array();
$array2 = array();
foreach( $unsorted as $key => $val ) {
if ( $key % 2 ) $array2[] = $val;
else $array1[] = $val;
}
$array1
приведет к:
Array
(
[0] => present
[1] => late
[2] => late
[3] => present
[4] => absent
[5] => present
)
$array2
приведет к:
Array
(
[0] => Bob
[1] => Jessie
[2] => Carl
[3] => Jessica
[4] => Adam
[5] => Hope
)
Ответ №2:
Просто, но нужно некоторое понимание:
$unsorted = array("present","Bob","late","Jessie","late","Carl","present","Jessica","absent","Adam","present","Hope");
$sorted = array_map(null, ...array_chunk($unsorted, 2));
print_r($sorted);
Комментарии:
1. Вы должны объяснить, как это работает, поскольку это «требует некоторого понимания».