2016-08-03 24 views
0

値に基づいて各配列要素にどのように機能を実行することができるのだろうと思いました。例えば値に基づいて2つの配列を結合する

、私は2つの配列がある場合:

[ 
    0 => 'gp', 
    1 => 'mnp', 
    2 => 'pl', 
    3 => 'reg' 
] 

そして

$translation = [ 
    'gp' => 'One', 
    'mnp' => 'Two', 
    'pl' => 'Three', 
    'reg' => 'Four', 
    'other' => 'Five', 
    'fs' => 'Six' 
]; 

をどのように私は

[ 
     0 => 'One', 
     1 => 'Two', 
     2 => 'Three', 
     3 => 'Four' 
    ] 

を得ることができますか?

私はforeachで管理しましたが、私はそれを行うより効率的な方法がいくつかあると思います。私はarray_walkarray_mapで遊んだりしようとしましたが、得られません。 :(

+2

試した 'array_combine(array_keys($ array1)、array_values($ translation));'? – jitendrapurohit

+0

@jitendrapurohit配列内の要素の数が異なる場合はうまくいきます。 –

+0

ああ、そう思って、試してみるだけでコメントしました。ありがとう – jitendrapurohit

答えて

0
<?php 

$arr = [ 
    0 => 'gp', 
    1 => 'mnp', 
    2 => 'pl', 
    3 => 'reg' 
]; 

$translation = [ 
    'gp' => 'One', 
    'mnp' => 'Two', 
    'pl' => 'Three', 
    'reg' => 'Four', 
    'other' => 'Five', 
    'fs' => 'Six' 
]; 

$output = array_map(function($value)use($translation){ 
    return $translation[$value]; 
    }, $arr); 

print_r($output); 

出力:

Array 
(
    [0] => One 
    [1] => Two 
    [2] => Three 
    [3] => Four 
) 
0
<?php 
$data = array('gp','mnp','pl','reg'); 
$translation = array('gp' => 'One','mnp' => 'Two','pl' => 'Three','reg' => 'Four','other' => 'Five','fs' => 'Six'); 
$new = array_flip($data);// chnage key value pair 
$newArr = array(); 
foreach($new as $key=>$value){ 
    $newArr[]= $translation[$key]; 
} 

echo "<pre>";print_r($newArr); 
0

第一paramは配列と第二の印刷のキーを与える

$sliced_array = array_slice($translation, 0, count(array1)); 

array_combine(array_keys($array1), array_values($sliced_array)); 

array_combine-使用して、これらの配列のキーと値を組み合わせ最後にarray_combineと組み合わせてください。

0
$toto1 = [ 
    0 => 'gp', 
    1 => 'mnp', 
    2 => 'pl', 
    3 => 'reg' 
]; 

$toto2 = [ 
    'gp' => 'One', 
    'mnp' => 'Two', 
    'pl' => 'Three', 
    'reg' => 'Four', 
    'other' => 'Five', 
    'fs' => 'Six' 
]; 

$result = array_slice(array_merge(array_values($toto2), $toto1), 0, count($toto1)); 
関連する問題