0

我正在处理一个用 php OOP 编码的项目。我创建了一个表单,它回发给自身并获取这些值并将它们放入预定义的数组格式中。我说预定义是因为这是以前的编码人员所做的方式:

$plane->add(array('{"name":"Chris","age":"22"}','{"name":"Joyce","age":"45"}'));

因此,当我从$_POST数组中获取值时,我认为这很简单,所以我尝试了

$plane->add(array("{'name':$customerName,'age':$customerAge}"));

虽然这会触发一个错误,但它似乎将变量的实际名称作为字符串而不是它的值传递。那么如何将这些值传递给该函数。当我们讨论它时,有人能解释一下这是什么类型的数组,我认为数组总是被$key=>value设置的,而不是$key:$value.

4

5 回答 5

2

正如其他评论和答案所指出的那样,数据正在以一种称为 JSON 的格式进行序列化。我建议阅读json_encode()json_decode()

要使您的示例正常工作,您必须执行以下操作:

$data = array("name" => $customerName, "age" => $customerAge);
$plane->add(array(json_encode($data));
于 2012-12-04T21:36:34.937 回答
0

这看起来像 json: http ://sandbox.onlinephpfunctions.com/code/e1f358d408a53a8133d3d2e5876ef46876dff8c6

代码:

$array = json_decode('{"name":"Chris","age":"22"}');
print_r( $array );

您可以使用以下方法将数组转换为 json:

 $array = array("Customer" => "John");
 $arrayJson = json_encode( $array);

所以把它放在你的上下文中:

$array = array("Name"=>"Chris", "age" => 22);
$array2 = array("Name"=>"John", "age" => 26);
$plane->add(array( json_encode( $array),json_encode( $array2) );
于 2012-12-04T21:31:28.607 回答
0

看起来它可能是 JSON,但可能不是。

小心引用他们所做的一切,你的名字或年龄周围没有任何引号。我添加了相同类型的引号,并使用了反斜杠,这样 PHP 就不会使用它们来结束字符串:

$plane->add(array("{\"name\":\"$customerName\",\"age\":\"$customerAge\"}"));

警惕用户数据,如果$customerName来自$customerAgePOST 数据,您需要使用经过良好测试的转义功能正确转义它们,而不是您一起破解的东西;)

于 2012-12-04T21:32:28.607 回答
0

看起来您的数组是 JSON 编码数组的数组。尝试使用:

$plane->add(array('{"name":"' . $nameVar . '","age":"' . $ageVar . '"}', ...));

如果您使用以下内容:

echo json_encode(array('name' => 'Me', 'age' => '75'), array('name' => 'You', 'age' => '30'));

您将获得以下字符串:

[{"name":"Me","age":"75"},{"name":"You","age":"30"}]
于 2012-12-04T21:35:07.997 回答
0

我相信您遇到了错误,因为您尝试传递给函数的不是 JSON,而(看起来)该函数需要一个数组 json 字符串,手动尝试编写字符串可能不是一个好主意,因为某些字符和类型编码不同。最好使用json_encode来获取 json 字符串。

$plane->add(array(json_encode(array('name'=>$customerName,'age'=>$customerAge))));
于 2012-12-04T21:35:57.923 回答