2017-02-22 14 views
0

Я Синтаксический Этот JSon массив, и я хочу взять type объект и положить, что в Нью-Column type2, и это один ряд моих JSon Ряды, Почему я получаю это предупреждение для некоторых строк?Warning: Invalid argument supplied for foreach() in C:\wamp64\www\json\json.php on line 18Синтаксический массив и JSON объект через PHP - Недействительный аргумент

[{"id":"26","answer":[{"option":"3","text":"HIGH"}],"type":"3"}, 
{"id":"30","answer":[{"option":"3","text":"LOW"}],"type":"3"}, 
{"id":"31","answer":[{"option":"3","text":"LOW"}],"type":"3"}] 

И Это мой код:

<?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)){ 
      $jason_array = json_decode($json,true); 
      // type2 
      $type = array(); 
      foreach ($jason_array as $data) { 
       if (array_key_exists('type', $data)) { 
        // Now we will only use it if it actually exists 
        $type[] = $data['type']; 
       } 
      }   
      // lets check first your $types variable has value or not? 
      if(!empty($type)) { 
      $types= implode(',',$type); /// implode yes if you got values 
      } 
      else { 
       $types = ''; //blank if not have any values 
      } 
      $sql2="update user_survey_start set type2='$types' where us_id=".$row[1];//run update sql 
      echo $sql2."<br>"; 
      mysqli_query($con,$sql2); 
     } 
    } 
} 
mysqli_close($con); 
?> 

Это Странг, почему некоторые строки имеют выход и некоторые строки не имеют никакого выхода, Тот Тип Json одинаковы. Я нашел проблему, потому что некоторые json вошли, я имею в виду. Это один Имеет Warning: Invalid argument supplied for foreach()

[{"id":"26","answer":[{"option":"4","text":"Hello 
"}],"type":"3"}] 

И это один Окей

[{"id":"26","answer":[{"option":"4","text":"Hello"}],"type":"3"}] 

Как я могу исправить эту проблему?

ответ

1

вы также можете попробовать is_array перед вашим для каждого цикла

if (is_array($jason_array)) 
{ 
    foreach ($jason_array as $data) { 
    { 
     ... 
    } 
} 
+0

Yessss, решенный, Appriciate It. –

+0

У меня нет какой-либо ошибки, но в выводе У меня нет значения для этих строк 'Type' Too, я имею в виду, у меня есть обновление user_survey_start set type2 = '' где us_id = 267593 –

+0

Я думаю, что ваша переменная $ jason_array не является массивом that'why not come any output –