【问题标题】:How to extract array from $_POST如何从 $_POST 中提取数组
【发布时间】:2019-06-05 18:07:03
【问题描述】:

我正在接收来自一个表单的 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"
    }
}

【问题讨论】:

  • 这应该可以工作,因为你已经展示了json_encode($_POST['alias']) 但是$_POST 一定不是你展示的。 print_r($_POST);但是,这不起作用是什么意思?
  • 我更新了帖子以反映print_r($_POST); 的输出,但是,除了将其更清晰地排列为数组之外,我认为没有任何变化。 json_encode($_POST['alias']) 向服务器发送 null。
  • 我不相信你。 json_encode 返回一个字符串或 false。检查错误和警告?
  • 你能给我们看看 print_r($_POST); 的结果吗
  • print_r($_POST) 的输出是Array ( [smsgte_submit] => Y [alias] => Array ( [1] => Array ( [name] => mywife [number] => 6135552001 [ssid] => 1 ) [2] => Array ( [name] => daughter [number] => 6135553001 [ssid] => 2) ) )

标签: php arrays post


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 不确定这个答案是否能回答任何问题。您可能忽略了有关 Cannot use a scalar value as an arrayIllegal string offset 的警告,这将阐明您在做什么以及为什么出错。
  • 我没有收到任何警告。
猜你喜欢
  • 2012-10-24
  • 2011-03-10
  • 1970-01-01
  • 1970-01-01
  • 2011-08-13
  • 2012-08-31
  • 2020-05-17
  • 2018-12-17
  • 2020-08-28
相关资源
最近更新 更多