2012-11-13 6 views
9

Tôi có 3 mảng, chỉ 7 phần tử trong mỗi mảng. Mảng là:Làm cách nào có thể hợp nhất 3 mảng thành một mảng kết hợp trong PHP

filename[]

title[]

description[]

Tôi muốn bày tỏ và lặp thông qua một mảng kết hợp duy nhất cho mỗi người trong số các dữ liệu trong mảng trên. filename có thể là giá trị quan trọng cho mảng assoc, nhưng mỗi tên tệp có tiêu đề và mô tả tương ứng riêng.

Dưới đây là một mẫu của:

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" } 

Trả lời

6
function mergeArrays($filenames, $titles, $descriptions) { 
    $result = array(); 

    foreach ($filenames as $key=>$name) { 
     $result[] = array('filename' => $name, 'title' => $titles[$key], 'descriptions' => $descriptions[ $key ]); 
    } 

    return $result; 
} 

Chỉ cần chắc chắn bạn vượt qua đầu vào hợp lệ đến chức năng, hoặc thêm một số kiểm tra. Đó là những gì bạn đang tìm kiếm?

+0

Làm thế nào tôi có thể gọi tên hoặc mô tả về dữ liệu của tôi lĩnh vực '$ res ult [0] '? – GivenPie

+0

'$ result [0] ['title']' hoặc '$ result [0] ['description']' –

0

Hãy thử điều này

$result = array_combine($filename, array_map(null, $title, $description)); 
var_dump($result); 

Hoặc nếu bạn cần các mảng bên trong để được kết hợp.

$result = array_combine($filename, 
    array_map(function($t, $d) { 
     return array('title'=>$t, 'description'=>$d); 
    }, $title, $description 
) 
); 

Nếu bạn chỉ muốn kết hợp ba mảng

$result = array_map(function($f, $t, $d) { 
    return array('filename'=>$f, 'title'=>$t, 'description'=>$d); 
    }, $filename, $title, $description 
); 
4

Nếu bạn quan trọng mảng là như nhau cho tất cả 3 mảng, cách tốt hơn để làm những gì bạn đang yêu cầu, là một việc tạo foreach một mảng mới với tất cả các chìa khóa (filename, tiêu đề, mô tả) trong khóa giống nhau:

<?php 
foreach($filename as $key => $file) 
{ 
    $files[$key]['filename'] = $file; 
    $files[$key]['title'] = $title[$key]; 
    $files[$key]['description'] = $description[$key]; 
} 
?> 
+0

Tôi thực sự thích logic của bạn, tôi nghĩ điều này xứng đáng với câu trả lời hàng đầu. – GivenPie

-1
$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 />"; 
} 
+0

Giải pháp này không đáp ứng được yêu cầu trong câu hỏi. – automatix