2015-04-12 127 views
1

我有两个数组,我想用第一个数组值替换第二个数组键,如果两个键都匹配的话。如何用另一个数组值替换阵列键

举一个例子:将A替换为代码和B替换为名称

如何做到这一点;

<?php 

     $array = array('A' => 'code', 'B' =>'name'); 
     $replacement_keys = array 
     (
      array("A"=>'sara','B'=>2020), 
      array("A"=>'ahmed','B'=>1010) 

     ); 
     foreach($replacement_keys as $key => $value){ 
       foreach($value as $sk => $sv){ 
        foreach($array as $rk => $rv){ 
         if($sk == $rk){ 
          $sk = $rv; 
         } 
        } 

       } 

     } 
     echo "<pre>"; 
     print_r($value); 
     echo "</pre>"; 
     exit; 

我想要的结果是这样

array(

     [0] => Array 
       (
        [name] => ahmed 
        [code] => 1020 
       ) 

     [1] => Array 
       (
        [name] => sara 
        [code] => 2020 
     ) 

) 
+1

在第二次看你的预期结果没有逻辑。你想用'code'替换A,用'code'替换B,但是在你的数组中它完全相反! – Rizier123

回答

2
<?php 
$array = array('A' => 'code', 'B' =>'name'); 
$replacement_keys = array 
(
    array("A"=>'sara','B'=>2020), 
    array("A"=>'ahmed','B'=>1010) 

); 

foreach($replacement_keys as &$value) 
{ 
    foreach ($array as $key => $name) { 
     $value[$name] = $value[$key]; 
     unset($value[$key]); 
    } 

} 
var_dump($replacement_keys); 
2

试试这个:

<?php 
$array = array('A' => 'code', 'B' =>'name'); 
$replacement_keys = array 
(
    array("A"=>'sara','B'=>2020), 
    array("A"=>'ahmed','B'=>1010) 

); 

$newArray = array(); 
foreach($replacement_keys as $key => $value) 
{ 
    foreach($value as $key2 => $value2) 
    { 
     if(isset($array[$key2])) 
     { 
      $newArray[$key][$array[$key2]] = $value2; 
     } 
     else 
     { 
      $newArray[$key][$key2] = $value2; 
     } 
    } 
} 
print_R($newArray); 
1

这应该为你工作,简单好用(我要去假设A应该是名字,B应该是代码)

(这里我通过每一个从$replacement_keysarray_map()磨合并用array_values()$array代替array_keys()。然后,我只是从$replacement_keys得到所有数组值,最后我array_combine()与相应的数组值替换数组键)

$result = array_map("array_combine", 
      array_map(function($v)use($array){ 
       return str_replace(array_keys($array), array_values($array), array_keys($v)); 
      }, $replacement_keys), 
      $replacement_keys 
     ); 

输出:

Array ([0] => Array ([code] => sara [name] => 2020) [1] => Array ([code] => ahmed [name] => 1010)) 
相关问题