【问题标题】:Array value not assigned to other array [duplicate]未分配给其他数组的数组值[重复]
【发布时间】:2019-05-08 07:29:43
【问题描述】:

我有这几行:

$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] 检查子数组是否包含超过 1 个值,如果是,则更改子数组的[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 给了我完全相同的数组,就好像我没有更改循环中的任何值一样。知道我在代码中做错了什么吗?

【问题讨论】:

    标签: php arrays


    【解决方案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 数组中进行更改。 (感谢编辑建议。)

    【讨论】:

    • 谢谢!这适用于我的编辑:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多