我正在以这种方式在jquery端创建一个数组。该数组是一个数组数组,其中每个元素都是一个看起来像[jskey, jsvalue]
的数组。
var jsarray = [];
// jsarray.push([jskey, jsvalue]);
jsarray.push([1, 123]);
jsarray.push([2, 98]);
jsarray.push([3, 107]);
jsarray.push([4, 34]);
然后我在将数组提交之前将其添加到表单的元素
$('#myform input[name=jsvalues]').val(jsarray);
在php方面,我期待收到一个数组数组,但是当我执行print_r()或var_dump()时我得到的是一个看起来像这样的字符串
string() "1,123,2,98,3,107,4,34"
答案 0 :(得分:5)
属性值是字符串。将数组转换为字符串时,可以将该数组中的每个元素转换为字符串并用逗号分隔(除非您覆盖toString()
方法(提示:不要))。
我建议将数组转换为JSON,然后将其分配给表单控件。然后,您可以在PHP中解析JSON。
http://json.org有链接(在底部)到JSON序列化器/反序列化器的PHP和JS实现。
答案 1 :(得分:2)
数组有一个 toString 方法,它完全符合您的体验:数组中的值列表以逗号分隔:
[1, [2, 3]].toString(); // returns "1,2,3"
要传输复杂的objets,您可以使用JS中的本机JSON(JavaScript Object Notation):
$('#myform input[name=jsvalues]').val(JSON.stringify(jsarray));
在服务器端,PHP 5有一个非常快的JSON API:
$jsvalues = json_decode($_POST['jsvalues']);
答案 2 :(得分:0)
您可以将该字符串转换回数组数组,假设它们都是对:
$arr = explode(",", $_POST['jsvalues']);
$jsvalues = array();
for ($i = 0; $i < count($arr); $i += 2) {
$jsvalues[] = array($arr[$i], $arr[$i + 1]);
}