3

次のような多言語データを含む、フォームからの次の配列があります。

Array
(
    [en_name] => ...........
    [en_description] => ...........
    [gr_name] => ...........
    [gr_description] => ...........
)

この配列を次のような 2 次元に変換するにはどうすればよいですか。

Array
(
    [en] => Array
        (
            [name] => ...........
            [description] => ...........
        )

    [gr] => Array
        (
            [name] => ...........
            [description] => ...........
        )
)
4

3 に答える 3

4

次のコードを使用します。

$finalArr = array();
foreach($arr as $key => $val) {
   $tok = explode('_', $key);
   $finalArr[$tok[0]][$tok[1]] = $val;
}
于 2013-02-11T15:38:45.500 に答える
1
$array3d = array();
foreach($arr as $key => $value) {
    $keyArr = explode("_", $key);
    $array3d[$keyArr[0]][$keyArr[1]] = $value;
}

各キーにアンダースコアが1つしかない場合は、これで機能するはずです。

于 2013-02-11T15:40:09.780 に答える
1

以下を試してください

$output = array();
foreach($arr as $val){
            $prefix = str_replace("_","",substr($val,0,3));
            $ending = substr($val,3,strlen($val));
            if(!is_array($output[$prefix]))
                 $output[$prefix] = array();
            array_push($output[$prefix],$ending);    
        }
于 2013-02-11T15:35:44.640 に答える