更新json php/laravel中键的值

更新json php/laravel中键的值,php,laravel,Php,Laravel,所以我有这个json [{"id":"Horario","text":"Horario","answer":null},{"id":"Name","text":"Nome","answer":"teste"},{"id":"Phone","text":"Telefone","answer":"91"},{"id":"Email","text":"Email","answer":"teste@hotmail.com"},{"id":"Insc1","text":"Insc1","answer":"

所以我有这个json

[{"id":"Horario","text":"Horario","answer":null},{"id":"Name","text":"Nome","answer":"teste"},{"id":"Phone","text":"Telefone","answer":"91"},{"id":"Email","text":"Email","answer":"teste@hotmail.com"},{"id":"Insc1","text":"Insc1","answer":"albano"},{"id":"Insc2","text":"Insc2","answer":"jorge"},{"id":"Insc3","text":"Insc3","answer":""}]
我想用我根据选中的单选按钮得到的值来更新“id”Horario的答案值

我想要这样的东西,但我不明白为什么要将null传递给特定的“id”Horario

    foreach($legend as $obj){
         if($obj->id == 'Horario')  
            $obj->answer=$option;
    }   
---我所有的代码

$legend = json_decode($request->input('quiz-legend'));  
$option=Input::get('qOp');

$answers = [];
$answersToTable = [];

foreach ($legend as $q) {
    array_push($answers, array(
        'id' => $q->id,
        'text' => $q->text,
        'answer' => $request->input('q'.$q->id)
    ));
}

foreach($legend as $obj){
    if($obj->id === 'Horario')
        $obj->answer=$option;
}

var_dump($option);
var_dump($answers);
所以我的var_dump返回$option=2的结果,但在我的答案中为null

:\xampp\htdocs\LactInfo\app\Http\Controllers\InquiryController.php:178:string '2' (length=1)
D:\xampp\htdocs\LactInfo\app\Http\Controllers\InquiryController.php:179:
array (size=7)
  0 => 
    array (size=3)
      'id' => string 'Horario' (length=7)
      'text' => string 'Horario' (length=7)
      'answer' => null
  1 => 
    array (size=3)
      'id' => string 'Name' (length=4)
      'text' => string 'Nome' (length=4)
      'answer' => string 'teste' (length=22)
  2 => 
    array (size=3)
      'id' => string 'Phone' (length=5)
      'text' => string 'Telefone' (length=8)
      'answer' => string '91' (length=9)
  3 => 
    array (size=3)
      'id' => string 'Email' (length=5)
      'text' => string 'Email' (length=5)
      'answer' => string teste@hotmail.com' (length=22)
  4 => 
    array (size=3)
      'id' => string 'Insc1' (length=5)
      'text' => string 'Insc1' (length=5)
      'answer' => string 'albano' (length=6)
  5 => 
    array (size=3)
      'id' => string 'Insc2' (length=5)
      'text' => string 'Insc2' (length=5)
      'answer' => string 'jorge' (length=5)
  6 => 
    array (size=3)
      'id' => string 'Insc3' (length=5)
      'text' => string 'Insc3' (length=5)
      'answer' => string '' (length=0)

您可以创建一个集合并查询所需的项目,将其从堆栈中弹出、更新并将其推回,而不是使用
foreach对所有项目进行迭代

像这样的方法应该会奏效:

$json=request('quick-legend');
$collection=collect($json);
$collection=$collection->keyBy('id');
$horario=$collection->where('id','horario')->first();
$collection=$collection->forget('Horario');
$horario['answer']=$option;
$collection=$collection->prepend($horario);
退回$collection;
但是如果您想继续使用循环,那么您必须将您的条件移动到foreach循环,跳过
Horario
,并将其异常地处理(将代码更改为在独立php脚本上工作)

$legend=json_decode(“[{”id:“Horario”,“text:“Horario”,“answer:”null},{”id:”Name”,“text:”Nome”,“answer:”ABILIO BRANDAO DE MELO“},{”id:”电话”,“text:”Telefone”,“answer:”917778621“},{”id:“Email”,“text:”Email”,“answer:”melo22_fca@hotmail.com“},{”id:“Insc1”,“text:“Insc1”,“answer:“albano”},{”id:“Insc2”,“text:“Insc2”,“answer”:“jorge”},{“id”:“Insc3”,“text”:“Insc3”,“answer”:“}]”);
$option='非常独特的答案';
$answers=[];
$answersToTable=[];
foreach($q的图例){
如果($q->id=='Horario'){
数组(
'id'=>$q->id,
“文本”=>$q->文本,
“应答”=>$option
));
continue;//跳过此对象
}
数组(
'id'=>$q->id,
“文本”=>$q->文本,
'回答'=>'可爱'$q->id
));
}
var_dump(答案);
输出

array:7 [
  0 => array:3 [
    "id" => "Horario"
    "text" => "Horario"
    "answer" => "Very distinctive answer"
  ]
  1 => array:3 [
    "id" => "Name"
    "text" => "Nome"
    "answer" => "cuteName"
  ]
  2 => array:3 [
    "id" => "Phone"
    "text" => "Telefone"
    "answer" => "cutePhone"
  ]
  3 => array:3 [
    "id" => "Email"
    "text" => "Email"
    "answer" => "cuteEmail"
  ]
  4 => array:3 [
    "id" => "Insc1"
    "text" => "Insc1"
    "answer" => "cuteInsc1"
  ]
  5 => array:3 [
    "id" => "Insc2"
    "text" => "Insc2"
    "answer" => "cuteInsc2"
  ]
  6 => array:3 [
    "id" => "Insc3"
    "text" => "Insc3"
    "answer" => "cuteInsc3"
  ]
]

您可以创建一个集合并查询所需的项目,将其从堆栈中弹出、更新并将其推回,而不是使用
foreach对所有项目进行迭代

像这样的方法应该会奏效:

$json=request('quick-legend');
$collection=collect($json);
$collection=$collection->keyBy('id');
$horario=$collection->where('id','horario')->first();
$collection=$collection->forget('Horario');
$horario['answer']=$option;
$collection=$collection->prepend($horario);
退回$collection;
但是如果您想继续使用循环,那么您必须将您的条件移动到foreach循环,跳过
Horario
,并将其异常地处理(将代码更改为在独立php脚本上工作)

$legend=json_decode(“[{”id:“Horario”,“text:“Horario”,“answer:”null},{”id:”Name”,“text:”Nome”,“answer:”ABILIO BRANDAO DE MELO“},{”id:”电话”,“text:”Telefone”,“answer:”917778621“},{”id:“Email”,“text:”Email”,“answer:”melo22_fca@hotmail.com{“id”:“Insc1”,“文本”:“Insc1”,“答案”:“albano”},{“id”:“Insc2”,“文本”:“Insc2”,“答案”:jorge“},{“id”:“Insc3”,“text”:“Insc3”,“answer”:“}]”);
$option='非常独特的答案';
$answers=[];
$answersToTable=[];
foreach($q的图例){
如果($q->id=='Horario'){
数组(
'id'=>$q->id,
“文本”=>$q->文本,
“应答”=>$option
));
continue;//跳过此对象
}
数组(
'id'=>$q->id,
“文本”=>$q->文本,
'回答'=>'可爱'$q->id
));
}
var_dump(答案);
输出

array:7 [
  0 => array:3 [
    "id" => "Horario"
    "text" => "Horario"
    "answer" => "Very distinctive answer"
  ]
  1 => array:3 [
    "id" => "Name"
    "text" => "Nome"
    "answer" => "cuteName"
  ]
  2 => array:3 [
    "id" => "Phone"
    "text" => "Telefone"
    "answer" => "cutePhone"
  ]
  3 => array:3 [
    "id" => "Email"
    "text" => "Email"
    "answer" => "cuteEmail"
  ]
  4 => array:3 [
    "id" => "Insc1"
    "text" => "Insc1"
    "answer" => "cuteInsc1"
  ]
  5 => array:3 [
    "id" => "Insc2"
    "text" => "Insc2"
    "answer" => "cuteInsc2"
  ]
  6 => array:3 [
    "id" => "Insc3"
    "text" => "Insc3"
    "answer" => "cuteInsc3"
  ]
]

=
是赋值运算符,您可能打算使用
=
==
作为比较。对不起,我的错误,我更新了我的答案,然后出现了什么问题?我的代码什么都不做..使用“id”的对象中的答案Horario保持“null”“,和$option have valueWorks for me
=
是一个赋值运算符,您可能打算使用
==
===
进行比较。对不起,我的错误我已更新了我的答案有什么问题吗?我的代码什么都不做。”。。带有“id”的对象中的答案Horario保持为“null”,并且$option对我来说具有valueWorks