2017-02-23 23 views
0

Я PARSING Этот JSon массив, и я хочу взять text Объект answer и положить, что в Нью-Column awnser2, и это один ряд моих JSon Ряды, ответ 38 и 39 in json Are То же, что и text Но anser 40 Описательный Awnser, я получил недопустимое строковое смещение 'text' для Привет, Word, Как я могу сделать условие, чтобы оба они были на выходе?условия 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","","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

Я знаю, что я хочу «текст Азера»: для 38 и 39 и «Awnser:' для 40, 40 последний айнсер –

ответ

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, You Are Very Intelligent, –

Смежные вопросы