9

3 つの配列があり、それぞれに 7 つの要素しかありません。配列は次のとおりです。

filename[]

title[]

description[]

上記の配列内のデータごとに、単一の連想配列を表現して反復処理したいと考えています。filenameassoc 配列のキー値にすることができますが、各ファイル名には、対応する独自のタイトルと説明があります。

以下はサンプルです。

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

4 に答える 4

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

関数に有効な入力を渡すことを確認するか、追加のチェックを追加してください。それはあなたが探しているものですか?

于 2012-11-13T03:18:57.903 に答える
5

配列キーが 3 つの配列すべてで同じである場合、求めていることを実行するためのより良い方法は、同じキーにすべてのキー (ファイル名、タイトル、説明) を持つ新しい配列を作成する foreach です。

<?php
foreach($filename as $key => $file)
{
    $files[$key]['filename'] = $file;
    $files[$key]['title'] = $title[$key];
    $files[$key]['description'] = $description[$key];
}
?>
于 2012-11-13T03:24:48.300 に答える
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 つの配列を結合するだけの場合

$result = array_map(function($f, $t, $d) { 
    return array('filename'=>$f, 'title'=>$t, 'description'=>$d); 
  }, $filename, $title, $description
);
于 2012-11-13T03:20:26.873 に答える