2017-02-23 75 views
0

我解析此JSON数组和我想利用text对象answer并提出,在新列awnser2,JSON数组,这是一排的我JSON行, 回答38和39在json是相同的text但是anser 40是描述性awnser,我有非法字符串偏移'文本'为你好字,我怎样才能使条件有他们两个在输出?条件通过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","","array"); 
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/','\n',trim($json)); 
    $jason_array = json_decode($json,true); 
$answers = array(); 
      foreach ($jason_array as $data) { 
        if (array_key_exists('answer', $data)) { 
         foreach($data['answer'] as $ans){ 
           $answers[] =$ans['text'] ; 
         } 
        } 
      } 
      if(!empty($answers)) { 
      $answers= implode('',$answers); /// implode yes if you got values 
      } 
      else { 
       $answers = 'Nothing Find'; //blank if not have any values 
      } 
      $sql3="update user_survey_start set awnser2='$answers' where us_id=".$row[1];//run update sql 
      echo $sql3."<br>"; 
      mysqli_query($con,$sql3); 
     } 
    } 
} 
mysqli_close($con); 
?> 

我想有text of Awnser:为....至39和Awnser: 40,40是最后awnser

+0

您的'Hello World'不像前两个那样在JSONArray中。 – FreedomPride

+0

我知道我想要'Awnser的文字:'38和39和'Awnser:'40,40是最后一个awnser –

回答

1

检查键设置或不否则赋值

foreach ($jason_array as $data) { 
        if (array_key_exists('answer', $data)) { 
         foreach($data['answer'] as $ans){ 
           $answers[] = isset($ans['text']) ? $ans['text'] : $ans;         
         } 
        } 
      } 
+0

解决,Greaaaaaaaaaat,你很聪明, –