2012-11-13 23 views
9

私は3つの配列を持っていますが、それぞれに7つの要素しかありません。配列は次のとおり3つの配列をPHPの単一の連想配列にマージする方法

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

答えて

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

。それはあなたが探しているものですか?

+0

どのように私はタイトルや '$解像度の私のデータ・フィールドの説明を呼び出​​すことができます。すべてのキー(ファイル名、タイトル、説明)同じキーで新しい配列ult [0] '? – GivenPie

+0

'$ result [0] ['title']'または '$ result [0] ['description']' –

0

この

$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 
) 
); 

あなたはちょうどあなたが配列のキーのすべての3つの配列で同じです、あなたが求めているものを行うには良い方法は、foreachの作成手段がある場合は3つの配列

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

を結合したい場合

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

私はあなたのロジックが本当に好きです。 – 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

このソリューションは、この問題の要件を満たしていません。 – automatix