从PHP中的{参与:0,事件ID:1,用户ID:1}中提取值


Pull values from: {"attending":0,"eventid":1,"userid":1} in PHP

到目前为止,我已经尝试了几种方法来从JAVA接收的以下数组中提取数据(在print_r($_POST)之后):

{"attending":0,"eventid":1,"userid":1}

但我运气不好,因为我在SO和网上找到的其他方法都略有不同(被"和[]包围)

我的代码:

print_r($_POST);
$data = json_decode($_POST);
$userid = $data['userid'];
$eventid = $data['eventid'];
$attending = $data['attending'];

我的问题是:如何正确地从Post中提取值并将其分配给值?

我是PHP的新手,所以请不要粗鲁的评论。

我也试过:

$data = json_decode($_POST, true);

正如评论中提到的,但现在我得到了:

Warning: json_decode() expects parameter 1 to be string, array given in C:'xampp'htdocs'attendanceradio.php on line 9

var_dump($_POST);:

Array
                                                          (
                                                              [{"attending":0,"eventid":2,"userid":1}] => 
                                                          )
                                                          array(1) {
                                                            ["{"attending":0,"eventid":2,"userid":1}"]=>
                                                            string(0) ""
                                                          }

完整的PHP代码:

<?php
    $user = 'root';
    $pass = '';
    $db = 'testuser';
    $con=mysqli_connect('localhost', $user, $pass, $db) or die('Unable to connect');
    print_r($_POST['json']);
    var_dump($_POST);
    $json = json_decode(trim(key($_POST), '[]'), true);
        var_dump($json);
    $userid = $json['userid'];
    $eventid = $json['eventid'];
    $attending = $json['attending'];
    $statement = mysqli_prepare($con, 
    'INSERT INTO user_has_event(user_user_id, event_event_id, attendance)
        VALUES (?, ?, ?)
        ON DUPLICATE KEY UPDATE attendance = ?');
    mysqli_stmt_bind_param($statement, 'iii', $userid, $eventid, $attending);
    mysqli_stmt_execute($statement);
    mysqli_stmt_store_result($statement);
    mysqli_stmt_bind_result($statement, $userid, $eventid, $attending);
    mysqli_stmt_close($statement);
    mysqli_close($con);
?>

根据您的数据,以下内容应该有效吗?

<?php
$json = json_decode(trim(key($_POST), '[]'), true);
var_dump($json);
?>

给出的错误消息是Array而不是字符串,根据var_dump,我可以看到POST正在返回一个数组。

如果你想解码JSON字符串,你必须指向字符串所在的数组索引,所以你的代码应该看起来像:

$data = json_decode($_POST[0], true);
$userid = $data['userid'];
$eventid = $data['eventid'];
$attending = $data['attending'];