2016-12-05 55 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; 

它不工作,怎麼能這樣concat?

這是我的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

A 「JSON解碼」 對象,是PHP 一個StdClass的一個簡單的對象。 這意味着你可以簡單地使用它訪問propreties(public)。 如果你不習慣反對,你可以在關聯數組中「解碼」你的JSON。 在這種情況下,第二個參數添加到您的json_decode(字符串,真實)

這可不行,因爲PHP對象使用「箭頭」 - >操作符來訪問屬性/方法

$ getAddEntryData - >定時_-> $ dayArray [$ i]於 - > _狀態;

如果你失去的結構,我建議你總是使用「的var_dump($變量)」中,你可以有最好的幫助之一。如果你想在PHP中使用$ _REQUEST,但是更喜歡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只有CONCAT –

+0

@AppuAmruth porblem做你試圖和它解決?是。這就是你所要做的。 – Beginner