0

$templates次のような配列があります。

        Array
(
    [0] => Array
        (
            [displayName] => First Template
            [fileName] => path_to_first_template
        )

    [1] => Array
        (
            [displayName] => Second Template
            [fileName] => path_to_second_template
        )

    [2] => Array
        (
            [displayName] => Third template
            [fileName] => path_to_third_template
        )

)

そして、私はそれを次のようにしたいと思います:

        Array
(
    [path_to_first_template] => First Template
    [path_to_second_template] => Second Template
    [path_to_third_template] => Third Template
)

つまりfileName、ネストされた配列の を新しい配列のキーにdisplayNameして、その値にしたいのです。

配列をループせずにこれを行うかなりの方法はありますか。何を検索すればよいか正確にわからなかったので、検索に運がありませんでした。

4

3 に答える 3

3

これが実際のクラシックforeachです:

$result = array();
foreach($array as $row) {
    $result[$row['fileName']] = $row['displayName'];
};

これを行うための「賢い」方法は次のとおりです。

$result = array();
array_walk($array, function($row) use (&$result) {
    $result[$row['fileName']] = $row['displayName'];
});

ご覧のとおり、2番目のアプローチは最初のアプローチよりも実際には優れていません。唯一の利点は、2番目の形式は単一の式であるため、理論的には積み重ねることができることですが、実際には、すでに十分な長さの式であるため、そうする必要はありません。

于 2012-09-19T12:01:44.887 に答える
2

配列をループして、新しい配列を作成します。

$newArray = array();
foreach($array as $val){
    $newArray[$val['fileName']] = $val['displayName'];
}
print_r($newArray);
于 2012-09-19T12:01:36.847 に答える
0
$ret = array()
foreach ($templates as $template) {
    $ret[$template["fileName"]] = $template["displayName"];
}
于 2012-09-19T12:01:48.687 に答える