代码之家  ›  专栏  ›  技术社区  ›  Amruth

如何将php变量与json_decoded变量连接

  •  0
  • Amruth  · 技术社区  · 9 年前

    我正在获取json对象并使用php接收 file_get_contents() .

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

    问题是我必须将php变量与接收到的对象连接起来。

    如果它是一个php请求对象,我们会这样做。

    $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);
    
            }
    
        }
    
    }
    
    3 回复  |  直到 8 年前
        1
  •  2
  •   Sougata Bose    9 年前

    试一试-

    $timingsStatus = $getAddEntryData->{'timings_' . $dayArray[$i] . '_status'};
    
        2
  •  0
  •   Beginner    9 年前

    要做到这一点,只需更改,这个函数将把json转换为数组

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

    到

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

    所以这个浓缩是有效的

    $timingsStatus = $getAddEntryData['timings_'.$dayArray[$i].'_status'];
    
        3
  •  -1
  •   Yoann    9 年前

    “JSON解码”对象,是PHP的简单对象 StdClass . 这意味着您可以简单地使用它访问propreties(public)。 如果您不习惯对象,可以在关联数组中“解码”JSON。 在本例中,将第二个参数添加到 json_decode(字符串,真)

    这无法工作,因为PHP对象使用“箭头”>访问属性/方法的运算符

    如果您丢失了您的结构,我建议您始终使用“ var_dump($variable) “,这是你能得到的最好的帮助之一。