这是什么样的php数组,如何编辑?

时间:2012-12-04 21:28:44

标签: php oop

我正在使用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

5 个答案:

答案 0 :(得分:2)

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

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

$data = array("name" => $customerName, "age" => $customerAge);
$plane->add(array(json_encode($data));

答案 1 :(得分: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) );

答案 2 :(得分:0)

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

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

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

警惕用户数据,如果$customerName$customerAge来自POST数据,则需要使用经过良好测试的转义功能正确地转义它们,而不是你只是在一起攻击;)

答案 3 :(得分: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"}]

答案 4 :(得分:0)

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

$plane->add(array(json_encode(array('name'=>$customerName,'age'=>$customerAge))));
相关问题