首页 > 解决方案 > 如何从 $_POST 中提取数组

问题描述

我正在从一个数组以及其他一些字段的表单中接收 POST 数据。我只需要获取数组数据并在我自己的发布请求中将其作为 json 传递给后端服务器。

$_POST 数据如下所示:

Array (
    [smsgte_submit] => Y 
    [alias] => Array (
        [1] => Array ( 
            [name] => mywife
            [number] => 6135552001
            [ssid] => 1 )
        [2] => Array (
            [name] => daughter
            [number] => 6135553001
            [ssid] => ) 
     )
)

我只想捕获别名条目并将它们编码为 json。

我成功地将整个 $_POST 数组编码为 json:

$data['jsonpost'] = json_encode($_POST);

它按预期对数组进行了编码,但是,我只想要别名数组,所以我尝试了以下方法:

$data['jsonpost'] = json_encode($_POST['alias']);

但是,这不起作用,它将 null 返回给服务器。然后我尝试了:

$data['jsonpost'] = json_encode(array_filter($_POST, 'alias'));

但这返回了null。

也许我需要重新设计我的表单,但最后,我想要一个看起来像这样的 json 数组:

    {
    "alias": {
        "name":"mywife",
        "number":"6135552001",
        "ssid":"1"
    },
        "alias": {
        "name":"daughter",
        "number":"6135553001",
        "ssid":"2"
    }
}

标签: phparrayspost

解决方案


事实证明,以下语法应该是正确的:

$data['jsonpost'] = json_encode($_POST['alias']);

但是,为了让它工作,我不得不将它拆分如下:

$jsonpost = json_encode($_POST['alias']);
$data['jsonpost'] = jsonpost;

我在这两个选项之间来回切换了几次,但只有第二个有效,至少在 PHP 7.3.5 中是这样。


推荐阅读