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