【问题标题】:assign a value dynamically to a multidimensional array in php为php中的多维数组动态赋值
【发布时间】:2017-07-07 03:32:30
【问题描述】:

我得到一个多维数组作为 json_decode 的结果:

$start=new DateTime();
$jzon='[{"latitude":41.9089983,"longitude":12.4778983,"mVersionCode":1, "data":""},
{"latitude":41.9091,"longitude":12.4781983,"mVersionCode":1, "data":""},
{"latitude":41.9087983,"longitude":12.4786,"mVersionCode":1, "data":""},
{"latitude":41.9082,"longitude":12.4793,"mVersionCode":1, "data":""},
{"latitude":41.9065,"longitude":12.4811983,"mVersionCode":1, "data":""},
{"latitude":41.9061983,"longitude":12.4819983,"mVersionCode":1, "data":""},
{"latitude":41.9063983,"longitude":12.4827983,"mVersionCode":1, "data":""},
{"latitude":41.9089983,"longitude":12.4840983,"mVersionCode":1, "data":""}]';

$arrayJson=json_decode($jzon, TRUE);

然后我尝试不同的方式遍历数组,我发现这个更有用:

if (json_last_error() === JSON_ERROR_NONE) {
    // JSON is valid
    foreach($arrayJson as $cell) {
        foreach($cell as $key=>$value) {    
            if($key=='data') {
                $value=$start->format('Y-m-d\ H:i:s');
                $start=$start->modify('+1 seconds');                    
            }
        }
    }
} else {
    echo " not valid Json";
}

我尝试了一些不同的方法来为字段“数据”分配 start 的值,但如果在 $arrayJson 对象上创建了一个 var_dump,则没有设置值!

$cell[$value]=$start; 不起作用! $value= $something; 不行!

【问题讨论】:

  • 使用References 将此foreach($cell as $key=>$value) 更改为foreach($cell as $key=>&$value) 并将此foreach($arrayJson as $cell) 更改为foreach($arrayJson as &$cell)

标签: php arrays json multidimensional-array foreach


【解决方案1】:

正如在 cmets 中已经提到的,通过引用使用。也不需要内循环,直接访问'data'成员即可:

foreach($arrayJson as &$cell)
{
    $cell['data'] = $start->format('Y-m-d\ H:i:s');
    $start=$start->modify('+1 seconds');
}

【讨论】:

    【解决方案2】:

    到罗马的一种方式:(使用参考)

    if (json_last_error() === JSON_ERROR_NONE) {
      // JSON is valid
      foreach($arrayJson as &$cell)//<--- reference here
      {
       $cell['data'] = $start->format('Y-m-d\ H:i:s');
       $start = $start->modify('+1 seconds');                 
      }
    } else { 
      echo " not valid Json"; 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-08
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-14
      相关资源
      最近更新 更多