将值从一个数组替换为另一个

时间:2019-01-24 05:39:44

标签: php arrays

两个数组,一个数组包含参数,另一个数组包含值,如何从另一个数组的值中替换一个数组中的值?请注意,两个数组中的值的数量都将随键值的变化而变化,但是它们具有值$ 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;

3 个答案:

答案 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);

https://3v4l.org/lP05J