我有两个数组,如果两个键匹配,我想用第一个数组值替换第二个数组键。
作为示例:将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
)
)
答案 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 )