两个数组,一个数组包含参数,另一个数组包含值,如何从另一个数组的值中替换一个数组中的值?请注意,两个数组中的值的数量都将随键值的变化而变化,但是它们具有值$ XX和键[XX](例如)之间的通用性以进行匹配。
Array
(
[0] =>
[1] => ID
[2] => $ID
[3] => Marque
[4] => Marque
[5] => $Marque
)
Array
(
[ID] => 2
[Marque] => Make Name
)
我要寻找的是第一个数组:
Array
(
[0] =>
[1] => ID
[2] => 2
[3] => Marque
[4] => Marque
[5] => Make Name
)
我在一个循环中尝试了一个循环,但是不确定如何将值与键匹配,以及如何重新创建重新填充的数组。第一个数组中的所有其他值必须保持不变。
$newArray = array();
foreach ($newFields as $key=>$value) :
foreach ($rowView as $newkey=>$newvalue) :
if ($key == $newvalue) $key=$newvalue;
$newArray[] = $newvalue;
endforeach;
endforeach;
答案 0 :(得分:1)
遍历第一个数组,并将第一个数组的所有键与第二个数组匹配,并指定第一个数组的值是否等于第二个数组的键值。 这样,您可以分配值。如果数组很大,则不建议这样做。一旦在内部循环中分配了值,就可以中断迭代。
答案 1 :(得分:1)
尝试一下:
<?php
$p = array(null, 'ID', '$ID', 'Marque', 'Marque', '$Marque');
$v = array('ID' => 2, 'Marque' => 'Make Name');
$r = array_map(
function ($n) use ($v) {
if (substr($n, 0, 1) == '$') {
$k = substr($n, 1);
return $v[$k];
}
return $n;
},
$p
);
var_dump($r);
答案 2 :(得分:0)
使用替换对数组进行循环,并使用array_search查看密钥是否在您的数组中。
这样,您就不会冒着数组中的键有$的风险,但是替换数组中没有替换项。
$arr = array(null, 'ID', '$ID', 'Marque', 'Marque', '$Marque');
$new = array('ID' => 2, 'Marque' => 'Make Name');
foreach($new as $key => $val){
$search = array_search("$" . $key, $arr);
if($search !== false){
$arr[$search] = $val;
}
}
var_dump($arr);