PHP - 数组中的变量显示为数组

时间:2017-11-01 06:17:17

标签: php arrays

我有一个向API提交值的数组。如果我手动添加值,它提交没有问题,但如果我在数组中添加一个变量值,它似乎将值视为数组。

这有效:

$post = array(

    'email'                    => 'john@example.com',
    'first_name'               => 'John',

);

这不起作用:

$totals = "'first_name' => 'John', 'email' => 'john@example.com'",

$post = array(

    $totals

);

API的错误响应是:

[0] => 'first_name' => 'John', 'email' => 'john@example.com',

是否有其他方法可以将我的值添加到API的数组中?

5 个答案:

答案 0 :(得分:2)

为什么以下不起作用?

{"backend": {"file": {"path": "/vault/file"}}, "listener": { "tcp": { "address": "0.0.0.0:8200", "tls_disable": 1 } }, "default_lease_ttl": "168h", "max_lease_ttl": "720h", "disable_mlock": "true"}

通过在值周围放置双引号$totals = "'first_name' => 'John', 'email' => 'john@example.com'" ,您将为"分配一个字符串并期望它创建一个数组。

有一些选项可以修复它。方案一

$totals

另一种选择:

$post['first_name'] = 'John';
$post['email'] = 'john@example.com';

另一种选择:

$post = array('first_name' => 'John', 'email' => 'john@example.com');

由于我不确定$totals = array('first_name' => 'John', 'email' => 'john@example.com'); $post = $totals; 值的来源,可能会有更多选项。

答案 1 :(得分:2)

你基本上是在尝试从String中创建一个直接不可能的数组

$totals = "'first_name' => 'John', 'email' => 'john@example.com'";

它创建一个带有值的字符串     '如first_name' => ' John','电子邮件' => ' john@example.com'

现在你的陈述

$post = array($totals);

基本上是将该字符串分配给零索引处的$ post数组。

答案 2 :(得分:1)

试试这个......

$totals = array();
$totals['first_name'] = 'John';
$totals['email'] = 'john@example.com';

$post = $totals;
print_r($post);

答案 3 :(得分:1)

第一个示例是一个包含两个键(emailfirst_name)的数组:

$post = array(
    'email'      => 'john@example.com',
    'first_name' => 'John',
);

你的第二个例子与此相同:

$post = array(
    0 => "'first_name' => 'John', 'email' => 'john@example.com'"
);

它只包含一个条目,位于键0。它的值看起来像PHP代码(但它不是)。这绝对不是第一个例子。

显然你的问题是如何在PHP中处理数组。

了解PHP arrays。文档页面介绍了如何create arrays using array()access array elements using square bracketscreate/modify array elements using square brackets。 PHP还提供了很多functions to handle arrays

阅读完文档后,您将能够以多种方式构建和修改数组。例如:

$post = array();
$post['email'] = 'john@example.com';
$post['first_name'] = 'John';

答案 4 :(得分:1)

你需要用方括号包裹关键部分。这将起作用

$totals = "['first_name'] => 'John', ['email'] => 'john@example.com'";

$post = array($totals);

print_r($post);