无法从多维数组中获取字符串以在PHP中写入JSON文件(Laravel 5.2) - 只是空引号

问题描述 投票:0回答:1

我有一个来自解码JSON的多维数组。我可以穿过数组并完美地回显每个元素。

但是我无法让我的Array元素过度写入JSON文件中的元素。

有趣的是,我可以回应它,它是字符串类型,我可以在“引号”之间写一个硬编码的字符串到JSON文件。

当我尝试写入文件时,现有的JSON值将被删除,并保留为一对空白引号“”。不是整个文件。只是我瞄准的确切元素。

我想它可能与数组的范围有关?

        foreach($data['Main'] as $sceneItem){
      $count = 0;
      //iterate over each element in every sceneItem looking for a matching field
      if(isset($sceneItem['Values'])){
        if(in_array($sceneItem['Values'], $template_fields)){
          //dd($user_input[$sceneItem['Values']]); //outputs desired string I'd like to put in JSON

          $data['Main'][$count]['Values'] = $user_input[$sceneItem['Values']];
          $count++;

       }
      }
    }

JSON示例:

{
 "Header": {
  "Project": "SchhhhriptTitle.aep"
 },
 "Main": [
  {
   "Title": "Text",
   "Comp": "Scene 1 - Introduction",
   "CompID": 40,
   "Name": "Company name ",
   "Layer": 1,
   "Values": "sc1txt2",
   "Font": "basictitlefont",
   "FontSize": 154,
   "FillColor": [
    0.95686000585556,
    0.95686000585556,
    0.95686000585556
   ]
  },
  {
   "Title": "Text",
   "Comp": "Scene 1 - Introduction",
   "CompID": 40,
   "Name": "Introducing",
   "Layer": 3,
   "Values": "sc1txt1",
   "Font": "basictitlefont",
   "FontSize": 154,
   "FillColor": [
    0.95686000585556,
    0.95686000585556,
    0.95686000585556
   ]
  },
php arrays json laravel
1个回答
0
投票

我认为你应该使用php foreach使用引用,如:

foreach($data['Main'] as &$sceneItem){

这样你就不需要拥有$ count变量(你在每次迭代时重置,而不是在开始时重置)。这样做,而不是:

$data['Main'][$count]['Values'] = $user_input[$sceneItem['Values']];

你可以有

$sceneItem['Values'] = $user_input[$sceneItem['Values']];
© www.soinside.com 2019 - 2024. All rights reserved.