2016-12-05 4 views
0

Получать json-объект и получать в php с помощью file_get_contents().
Как связать переменную php с переменной json_decoded

$getAddEntryData = json_decode(file_get_contents("php://input")); 

Проблема в том, что я должен конкатенации PHP переменного с полученным объектом.

Если это объект php REQUEST, мы делаем это.

$timingsStatus = $_REQUEST['timings_'.$dayArray[$i].'_status']; 

Но как я могу это сделать с помощью JSON декодируются объекта.

Я пробовал что-то вроде этого ->.

$timingsStatus = $getAddEntryData->timings_.$dayArray[$i]._status; 

Не работает, как можно конкаттировать подобное ?.

Вот моя структура данных json.

let data = { 
     timings_enabled : this.form_data.map_timings, 

     timings_mon_status : this.form_data.map_timings_mon_status, 
     timings_mon_from : this.form_data.map_timings_mon_from, 
     timings_mon_to : this.form_data.map_timings_mon_to, 


     timings_tue_status : this.form_data.map_timings_tue_status, 
     timings_tue_from : this.form_data.map_timings_tue_from, 
     timings_tue_to : this.form_data.map_timings_tue_to, 


     timings_wed_status : this.form_data.map_timings_wed_status, 
     timings_wed_from : this.form_data.map_timings_wed_from, 
     timings_wed_to : this.form_data.map_timings_wed_to, 


     timings_thu_status : this.form_data.map_timings_thu_status, 
     timings_thu_from : this.form_data.map_timings_thu_from, 
     timings_thu_to : this.form_data.map_timings_thu_to, 


     timings_fri_status : this.form_data.map_timings_fri_status, 
     timings_fri_from : this.form_data.map_timings_fri_from, 
     timings_fri_to : this.form_data.map_timings_fri_to, 


     timings_sat_status : this.form_data.map_timings_sat_status, 
     timings_sat_from : this.form_data.map_timings_sat_from, 
     timings_sat_to : this.form_data.map_timings_sat_to, 

     timings_sun_status : this.form_data.map_timings_sun_status, 
     timings_sun_from : this.form_data.map_timings_sun_from, 
     timings_sun_to : this.form_data.map_timings_sun_to 

    } 

PHP-код, что я пытаюсь сделать.

$getAddEntryData = json_decode(file_get_contents("php://input")); 
$dayArray = array('mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'); 

if (isset($getAddEntryData->timings_enabled)) { 

    for ($i = 0; $i < count($dayArray); $i++) { 

     //$timingsStatus = $_REQUEST['timings_'.$dayArray[$i].'_status']; 
     $timingsStatus = $getAddEntryData->timings_.$dayArray[$i]._status; 

     $source = str_replace('[[TIMINGS-STATUS]]', "Available", $source); 

     if ($timingsStatus == 'Open') { 

      // $timingsFromTime = $_REQUEST['timings_'.$dayArray[$i].'_from']; 
      $timingsStatus = $getAddEntryData->timings_.$dayArray[$i]._from; 


      // $timingsToTime = $_REQUEST['timings_'.$dayArray[$i].'_to']; 
      $timingsStatus = $getAddEntryData->timings_.$dayArray[$i]._to; 

      $source = str_replace('[[TIMINGS-'.strtoupper($dayArray[$i]).'-STATUS]]', $timingsStatus, $source); 
      $source = str_replace('[[TIMINGS-'.strtoupper($dayArray[$i]).'-FROM]]', $timingsFromTime, $source); 
      $source = str_replace('[[TIMINGS-'.strtoupper($dayArray[$i]).'-TO]]', $timingsToTime, $source); 

     } else { 

      $source = str_replace('[[TIMINGS-'.strtoupper($dayArray[$i]).'-STATUS]]', $timingsStatus, $source); 
      $source = str_replace('[[TIMINGS-'.strtoupper($dayArray[$i]).'-FROM]]', "", $source); 
      $source = str_replace('[[TIMINGS-'.strtoupper($dayArray[$i]).'-TO]]', "", $source); 

     } 

    } 

} 
+0

вы можете включить структуру вашего декодированного JSON – Beginner

+0

@NewbeeDev отредактированный вопрос –

+0

Кажется ваш JSON не является действительным ... – Naga

ответ

1

Попробовать -

$timingsStatus = $getAddEntryData->{'timings_' . $dayArray[$i] . '_status'}; 
+0

спасибо @Sougata его работа –

+0

http://stackoverflow.com/questions/2596837/curly-braces-in-string-in-php поможет –

-1

А "JS декодируются" объект, является простой задачей PHP StdClass. Это означает, что вы можете просто использовать его для доступа к проприетям (общедоступным). Если вы не используете объект, вы можете «декодировать» ваш JSON в ассоциативном массиве. В этом случае необходимо добавить второй параметр к вашему json_decode (строка, правда)

Это не может работать, потому что объекты PHP использовать «стрелку» -> оператор доступа к свойствам/методы

$ getAddEntryData -> тайминги _-> $ dayArray [$ я] -> _ статус;

Если ваш потерянный с вашей структурой, я рекомендую вам всегда использовать «var_dump ($ переменный)», один из лучшей помощи вы можете иметь там.

FYI, не используйте $ _REQUEST в PHP, но предпочитаете POST, GET, SERVER ... которые намного лучше и всегда действительны.

0

сделать это просто изменить свой, эта функция преобразует вашу JSON в массив

$getAddEntryData = json_decode(file_get_contents("php://input")); 

в

$getAddEntryData = json_decode(file_get_contents("php://input"), true); 

так это concatination работает

$timingsStatus = $getAddEntryData['timings_'.$dayArray[$i].'_status']; 
+0

это и все, что я сделал @Newbee porblem только с Concat –

+0

@AppuAmruth ты попробовал и он решает? да.это все, что вам нужно. – Beginner

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