如何用另一个数组值替换数组键

时间:2015-04-12 13:20:02

标签: php arrays

我有两个数组,如果两个键匹配,我想用第一个数组值替换第二个数组键。

作为示例:将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
        )

)

4 个答案:

答案 0 :(得分: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 :(得分: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 :(得分:1)

这应该对你有用,好又简单(我假设A应该是名字,B应该是代码)

(在这里,我使用array_map()$replacement_keys查看每个数组,并将array_keys()替换为$array的{​​{3}}。然后我只需获取所有数组来自$replacement_keys的值,最后是array_values()替换的数组键和相应的数组值

$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 ) )

答案 3 :(得分:0)

array_fill_keys

(PHP 5> = 5.2.0,PHP 7)

array_fill_keys —用值填充数组,并指定键

说明

array array_fill_keys ( array $keys , mixed $value )
  • 使用keys数组的值作为键,使用value参数的值填充数组。

http://php.net/manual/en/function.array-fill-keys.php