2017-02-22 8 views
0

Я Синтаксический Этот JSon массив, и я хочу взять type объект и положить, что в Нью-Column type2, и это один ряд моих JSon строк, Но мой Secend Row является Defference и я получаю уведомление, Как я могу сделать условие для типа, чтобы пропустить это уведомление?, когда я не type В моей JSON Это моя JSON в строке 1 и в порядке:Синтаксический 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"}] 

И Это моя JSON в строке 2 Без type и я получить два ,,:

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

И Это мой код:

<?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) { 
      $type[] = $data['type']; 
      } 
      $types= implode(',',$type); 
      $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); 
?> 

и это мой выход: Примечание: Undefined индекс: тип е в C: \ wamp64 \ WWW \ JSON \ json.php на линии 20 обновление user_survey_start набор type2 = ',,' где us_id = 256793

+1

вы должны проверить, являются ли адресности значения массива $ типа или нет? 'if (isset ($ types) && $ types! = '') {$ types = implode (',', $ type); } else {$ types = ''; } ' –

+0

Я новичок в PHP Можете ли вы исправить мой код Пожалуйста, –

+1

Вы сообщение об ошибке не имеет ничего общего с вашим запросом. Вам просто нужно проверить, существует ли '$ data ['type']' перед его использованием. Проверьте функцию php ['array_key_exists()'] (http://php.net/manual/en/function.array-key-exists.php) –

ответ

1

An "не определено" индексных сообщений появляется, когда вы пытаетесь используйте ключ массива, который не существует.

При использовании массивов, в которых вы не знаете, существует или нет ключ, вам необходимо проверить, существует ли он, прежде чем пытаться его использовать.

foreach ($jason_array as $data) { 
    // If $data doesn't have a key called 'type', you'll get that notice. 
    $type[] = $data['type']; 
} 

Давайте использовать функцию РНР array_key_exists(), чтобы проверить, если ключ существует:

foreach ($jason_array as $data) { 
    if (array_key_exists('type', $data)) { 
     // Now we will only use it if the key 'type' actually exists 
     $type[] = $data['type']; 
    } 
} 

Подробнее о PHP: “Notice: Undefined variable”, “Notice: Undefined index”, and “Notice: Undefined offset”

+0

Да, решено, укажите его –

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