Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将一个数组的值替换为另一个数组的值_Php - Fatal编程技术网

Php 将一个数组的值替换为另一个数组的值

Php 将一个数组的值替换为另一个数组的值,php,Php,我有两个数组$array1和$array2,数据如下所示: $array1: Array ( [0] => Array ( [id] => 222 [issubtask] => true ) [1] => Array ( [id] => 444 [issubtask] =>

我有两个数组$array1和$array2,数据如下所示:

$array1:

Array 
  ( 
     [0] => Array 
         ( 
            [id] => 222
            [issubtask] => true 
         ) 
     [1] => Array 
         ( 
            [id] => 444
            [issubtask] => false 
         )
  )
$array2:

Array 
  ( 
   [0] => Array 
    ( 
        [id] => 111 
        [name] => Mark 
        [isselected] => false 
        [issubtask] => false 
    ) 
   [1] => Array 
    ( 
        [id] => 222 
        [name] => Tony 
        [isselected] => false 
        [issubtask] => false 
    ) 
   [2] => Array 
    ( 
        [id] => 333 
        [name] => Jack 
        [isselected] => false 
        [issubtask] => false 
    )
   [3] => Array 
    ( 
        [id] => 444 
        [name] => Nick 
        [isselected] => false 
        [issubtask] => false 
    )   
  )
我只想检查$array1中与$array2匹配的'id',然后用$array1中的'issubtask'值替换该'id'的'issubtask'值$array2

我尝试过这一点,但$array2的值没有改变:

foreach ($array1 as $val1) {
    foreach ($array2 as $val2) {
        // Checking whether IDs match
        if ($val2['id'] == $val1['id']) {
            $val2['isselected'] = "true";
            $val2['issubtask'] = $value1['issubtask'];
        }
    }
}
print_r($array2);
我期待下面的结果,但我得到的$array2值与以前一样

结果$2:

Array 
( 
[0] => Array 
    ( 
        [id] => 111 
        [name] => Mark 
        [isselected] => false 
        [issubtask] => false 
    ) 
[1] => Array 
    ( 
        [id] => 222 
        [name] => Tony 
        [isselected] => true 
        [issubtask] => true 
    ) 
[2] => Array 
    ( 
        [id] => 333 
        [name] => Jack 
        [isselected] => false 
        [issubtask] => false 
    )
[3] => Array 
    ( 
        [id] => 444 
        [name] => Nick 
        [isselected] => true 
        [issubtask] => false 
    )   
)  
我不确定我的做法是否正确。非常感谢您的帮助。

谢谢

直接替换$array2而不是$val2

foreach ($array1 as $val1) {
    foreach ($array2 as $k => $v) {
        // Checking whether IDs match
        if ($v['id'] == $val1['id']) {
            $array2[$k]['isselected'] = "true";
            $array2[$k]['issubtask'] = $val1['issubtask'];
        }
    }
}
print_r($array2);

直接替换$array2而不是$val2

foreach ($array1 as $val1) {
    foreach ($array2 as $k => $v) {
        // Checking whether IDs match
        if ($v['id'] == $val1['id']) {
            $array2[$k]['isselected'] = "true";
            $array2[$k]['issubtask'] = $val1['issubtask'];
        }
    }
}
print_r($array2);

直接替换$array2而不是$val2

foreach ($array1 as $val1) {
    foreach ($array2 as $k => $v) {
        // Checking whether IDs match
        if ($v['id'] == $val1['id']) {
            $array2[$k]['isselected'] = "true";
            $array2[$k]['issubtask'] = $val1['issubtask'];
        }
    }
}
print_r($array2);

直接替换$array2而不是$val2

foreach ($array1 as $val1) {
    foreach ($array2 as $k => $v) {
        // Checking whether IDs match
        if ($v['id'] == $val1['id']) {
            $array2[$k]['isselected'] = "true";
            $array2[$k]['issubtask'] = $val1['issubtask'];
        }
    }
}
print_r($array2);

您正在更改var的本地值,而不是真正存储在数组中的值。 当你有了这个:

foreach($array2作为$key2=>$val2){
//这是错误的:$val2只是foreach中的本地值
$val2['isselected']=“true”;
//这没关系,您确实更改了数组中的值
$array2[$key2]['isselected']=true;
}
这是你问题的答案。小心使用“真”和“非真”。


您正在更改var的本地值,而不是真正存储在数组中的值。 当你有了这个:

foreach($array2作为$key2=>$val2){
//这是错误的:$val2只是foreach中的本地值
$val2['isselected']=“true”;
//这没关系,您确实更改了数组中的值
$array2[$key2]['isselected']=true;
}
这是你问题的答案。小心使用“真”和“非真”。


您正在更改var的本地值,而不是真正存储在数组中的值。 当你有了这个:

foreach($array2作为$key2=>$val2){
//这是错误的:$val2只是foreach中的本地值
$val2['isselected']=“true”;
//这没关系,您确实更改了数组中的值
$array2[$key2]['isselected']=true;
}
这是你问题的答案。小心使用“真”和“非真”。


您正在更改var的本地值,而不是真正存储在数组中的值。 当你有了这个:

foreach($array2作为$key2=>$val2){
//这是错误的:$val2只是foreach中的本地值
$val2['isselected']=“true”;
//这没关系,您确实更改了数组中的值
$array2[$key2]['isselected']=true;
}
这是你问题的答案。小心使用“真”和“非真”。


谢谢@Mario,它有帮助:)谢谢@Mario,它有帮助:)谢谢@Mario,它有帮助:)谢谢@Mario,它有帮助:)