2017-02-23 35 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,你很聰明, –