Как объединить 3 массива в один ассоциативный массив в PHP
у меня есть 3 массива, всего 7 элементов в каждом. Массивы:
filename[]
title[]
description[]
Я хочу выразить и повторить через один ассоциативный массив для каждого из данных в массивах выше. filename
может быть ключевым значением для массива assoc, но каждое имя файла имеет свой собственный соответствующий заголовок и описание.
Ниже приведен пример:
var_dump($filename)
string(10) "IMG_1676_3" [1]=>
string(10) "IMG_0539_3" [2]=>
string(8) "IMG_1942" [3]=>
string(8) "IMG_1782" [4]=>
string(8) "IMG_2114" [5]=>
string(8) "IMG_9759" [6]=>
string(8) "IMG_2210" }
var_dump($title)
string(31) "Lighthouse at Ericeira Portugal" [1]=>
string(23) "Gaudi park in Barcelona" [2]=>
string(32) "Driving around outside of Lisbon" [3]=>
string(16) "Madeira Portugal" [4]=>
string(15) "Barcelona Spain" [5]=>
string(15) "Lisbon Portugal" [6]=>
string(14) "Sailing Lisbon" }
4 ответов
function mergeArrays($filenames, $titles, $descriptions) {
$result = array();
foreach ( $filenames as $key=>$name ) {
$result[] = array( 'filename' => $name, 'title' => $titles[$key], 'descriptions' => $descriptions[ $key ] );
}
return $result;
}
просто убедитесь, что вы передаете действительный ввод функции или добавляете дополнительную проверку. Это то, что ты ищешь?
Если вы ключ массива одинаковы для всех 3 массивов, лучший способ сделать то, что вы просите, - это создать новый массив со всеми ключами(имя файла,название, описание) в одном ключе:
<?php
foreach($filename as $key => $file)
{
$files[$key]['filename'] = $file;
$files[$key]['title'] = $title[$key];
$files[$key]['description'] = $description[$key];
}
?>
попробуй такое
$result = array_combine($filename, array_map(null, $title, $description));
var_dump($result);
или если вам нужно, чтобы внутренний массив был ассоциативным.
$result = array_combine($filename,
array_map(function($t, $d) {
return array('title'=>$t, 'description'=>$d);
}, $title, $description
)
);
Если вы просто хотите объединить три массива
$result = array_map(function($f, $t, $d) {
return array('filename'=>$f, 'title'=>$t, 'description'=>$d);
}, $filename, $title, $description
);
$array1 = array("orange", "apple", "grape");
$array2 = array("peach", 88, "plumb");
$array3 = array("lemon", 342);
$newArray = array_merge($array1, $array2, $array3);
foreach ($newArray as $key => $value) {
echo "$key - <strong>$value</strong> <br />";
}