2017-02-25 86 views
-1

合并对象我有idtypeanswer我合并idtypeanswer在一起,并把它们放在id2列JSON数组,为什么我不能得到的输出$答案值?解析JSON数组,并通过PHP

[{"id":"38","answer":[{"option":"3","text":"HIGH"}],"type":"a"}, 
{"id":"39","answer":[{"option":"3","text":"LOW"}],"type":"b"}, 
{"id":"40","answer":["Hello Word"],"type":"c"}] 

这是我的代码:

<?php 
$con=mysqli_connect("localhost","root","","arrayok"); 
mysqli_set_charset($con,"utf8"); 

// Check connection 
if (mysqli_connect_errno()){ 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

$sql="SELECT `survey_answers`,us_id FROM `user_survey_start`"; 
if ($result=mysqli_query($con,$sql)){ 
    while ($row = mysqli_fetch_row($result)){ 
     $json = $row[0]; 
     if(!is_null($json)){       

     $json = preg_replace("!\r?\n!", "", $json); 
     $jason_array = json_decode($json,true); 

    // id2 
      $id = array(); 
      foreach ($jason_array as $data) { 
      if (array_key_exists('id', $data)) { 
      if (array_key_exists('type', $data)) { 
      if (array_key_exists('answer', $data)) { 
       foreach($data['answer'] as $ans){ 
       $answers[] = isset($ans['text']) ? $ans['text'] : $ans; 
       } 

      $id[] = ' ID='.$data['id'].', TYPE='.$data['type'].', AWNSER='.$answers; 
      } 
      } 
      } 
      } 
      // lets check first your $types variable has value or not? 
      $ids= implode(',',$id); /// implode yes if you got values 
      $sql1="update user_survey_start set id2='$ids' where us_id=".$row[1];//run update sql 
      echo $sql1."<br>"; 
      mysqli_query($con,$sql1); 

     } 
    } 
} 
mysqli_close($con); 
?> 

这是我的输出:

update user_survey_start set id2=' ID=38, TYPE=a, AWNSER=Array, 

和我Notice: Array to string conversion in C:\wamp64\www\json\awnser.php on line 29
我希望有$价值解答了

+0

什么都没有改变。我还有'更新user_survey_start set id2 ='ID = 38,TYPE = a,AWNSER = Array,' –

回答

0

自己解决 因为我不能把Awnser直接为id[],我抽放工艺Awnser这样的:

$id[] = ' ID='.$data['id'].', TYPE='.$data['type']; 
$id[] = isset($ans['text']) ? ' AWNSER='.$ans['text'] : ' AWNSER='.$ans; 

,这是我的代码:

<?php 
$con=mysqli_connect("localhost","root","","arrayok"); 
mysqli_set_charset($con,"utf8"); 

// Check connection 
if (mysqli_connect_errno()){ 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

$sql="SELECT `survey_answers`,us_id FROM `user_survey_start`"; 
if ($result=mysqli_query($con,$sql)){ 
    while ($row = mysqli_fetch_row($result)){ 
     $json = $row[0]; 
     if(!is_null($json)){       

     $json = preg_replace("!\r?\n!", "", $json); 
     $jason_array = json_decode($json,true); 

    // id2 
      $id = array(); 
      foreach ($jason_array as $data) { 
      if (array_key_exists('id', $data)) { 
      if (array_key_exists('type', $data)) {  
      if (array_key_exists('answer', $data)) { 
       foreach($data['answer'] as $ans){ 
       $id[] = ' ID='.$data['id'].', TYPE='.$data['type']; 
       $id[] = isset($ans['text']) ? ' AWNSER='.$ans['text'] : ' AWNSER='.$ans; 
       } 



      } 
      } 
      } 
      } 
      // lets check first your $types variable has value or not? 
      $ids= implode(',',$id); /// implode yes if you got values 
      $sql1="update user_survey_start set id2='$ids' where us_id=".$row[1];//run update sql 
      echo $sql1."<br>"; 
      mysqli_query($con,$sql1); 

     } 
    } 
} 
mysqli_close($con); 
?> 
+0

如果你能解释一下你如何解决你的问题,这将是很好的:) – user3284463

+0

我更新了My Awnser,因为我无法直接把Awnser放到'id'和'type'之后的id []中,所以我修改了Awnser Invidual,像这样:'$ id [] ='ID ='。$ data ['id']。', TYPE =” $数据[ '类型']; $ id [] = isset($ ans ['text'])? 'AWNSER ='。$ ans ['text']:'AWNSER ='。$ ans;' –