我有几行内容:
$gifts_offered_in_sub = array();
$gifts_offered_in_final = array();
foreach($gifts_offered_in as $k=>$v) {
$s = sizeof($v);
foreach($v as $vk=>$vv) {
$vv[0] = $s;
}
$gifts_offered_in_final[] = $v;
}
var_dump($gifts_offered_in_final);
gifts_offered_in
数组包含一个看起来像这样的数组:
array(1) {
[0]=>
array(2) {
[220669]=>
array(2) {
[0]=>
string(1) "1"
[1]=>
string(1) "1"
}
[220664]=>
array(2) {
[0]=>
string(1) "1"
[1]=>
string(1) "1"
}
}
}
我想要实现的是检查数组中的每个元素(在这种情况下,只有1个元素[0]
检查子数组是否包含多个值,如果是,则更改子数组的[0]
包含结果最后要包含的全部大小:
array(1) {
[0]=>
array(2) {
[220669]=>
array(2) {
[0]=>
string(1) "2"
[1]=>
string(1) "1"
}
[220664]=>
array(2) {
[0]=>
string(1) "2"
[1]=>
string(1) "1"
}
}
}
但是它不起作用,var_dump给了我完全相同的数组,就好像我没有在循环中更改任何值一样。知道我的代码在做什么错吗?
答案 0 :(得分:1)
此行仅更改您的本地$ vv变量:
$vv[0] = $s;
您应该将其更改为:
$gifts_offered_in[$k][$vk][0] = $s;
这:
$gifts_offered_in_final[$k] = $gifts_offered_in[$k];
然后,您正在逐步构建的新$ gifts_offered_in_final数组中进行更改。 (感谢“编辑”建议。)