将字符串转换为数组我有一个发送数据到我的PHP文件中的JavaScript代码...我有困难,在PHP
的这个样本值是:
array(
array('story_name'=>'mystory', 'priority'=>1),
array('story_name'=>'mystory2', 'priority'=>2)
)
所以我的问题是如何将此字符串转换为相同格式的PHP数组,以便我可以追加到我的查询?
将字符串转换为数组我有一个发送数据到我的PHP文件中的JavaScript代码...我有困难,在PHP
的这个样本值是:
array(
array('story_name'=>'mystory', 'priority'=>1),
array('story_name'=>'mystory2', 'priority'=>2)
)
所以我的问题是如何将此字符串转换为相同格式的PHP数组,以便我可以追加到我的查询?
使用JSON:
echo json_encode($yourarray);
echo json_decode($_GET['fromjs']);
你可以序列化()然后urlencode()它,但json_encode在各种方式更好(更小,更可读,更便携式...) – voidstate
问题是那些数组只是一个字符串,而不是一个数组结构,仍然json可以做到这一点? – user1073113
将其转换为数组。为什么在这里使用字符串...是否有一个原因,它必须是一个字符串呢?我对我没有意义;)在js中处理数组结构并将其转换为JSON字符串以与PHP交互。 –
你确定要发送本机PHP代码的服务器?这确实可能会导致一些安全漏洞的主要主要。以更友善的格式发送数据要好得多。
mystory,1|mystory,2
然后,你可以使用explode()
方法将数据转换成数组
其他人使用JSON建议。
让我们考虑,我们有一个js:你会在JSON如下
[ //Used to indicate sequential array i.e. $myarray[0]
{ //Used to indicate associative array i.e. $myarray["story_name"]
story_name: "mystory",
priority: 1
},
{
story_name: "mystory2",
priority: 2
}
]
JavaScript的数组值可以使用下面的方法
步骤1被传递到PHP文件格式化您的上述数据数组作为
<script language=javascript>
scriptAr = new Array();
scriptAr[0] = "one";
scriptAr[1] = "two";
scriptAr[2] = "three";
<script>
步骤2:
Now we will create a hidden form field as follows
<form action="phpArrayTest.php" method=post name=test onSubmit=setValue()>
<input name=arv type=hidden>
<input type=submit>
</form>
这里我们所做的是,当提交被调用时,我们首先使用onSubmit方法做一些工作(“onSubmit = setValue()”)。 onSubmit方法将调用我们定义的setValue()函数。之后,该动作将发生并且stringTokens.php将被调用。
第3步: 这里我们定义setValue方法。该方法将转换为一个字符串,然后将其设置为隐藏字段。
<script language=javascript>
function setValue()
{
var arv = scriptAr.toString();
// This line converts js array to String document.test.arv.value=arv;
// This sets the string to the hidden form field. }
</script>
步骤4: 在PHP文件的字符串将被分裂回阵列。
你可以使用eval:
$arr = eval($data);
注意,这可能会导致自EVAL安全问题()执行从字符串任何PHP代码。你应该使用这个与cauntion。
您还需要添加返回到您的代码。
上EVAL的更多信息()可以在这里找到:http://php.net/manual/en/function.eval.php
更好的办法是JSON发送到你的PHP脚本是这样的:
在javascript中:
var json = array2json(YOUR_JS_ARRAY);
发送这对你的PHP脚本和解码这个PHP数组是这样的:
json_decode($_POST['data']);
有关JSON解码的更多信息,请参见http://php.net/manual/en/function.json-decode.php。有关JavaScript对象表示法(JSON)的更多信息,请参阅http://en.wikipedia.org/wiki/JSON。
是否有使用* this *格式而不是标准格式的原因? (如JSON) – Roman
你不能通过JS发送数组到PHP。只有某些格式的字符串(例如JSON)。 –
是的,这是一个字符串不是一个实际的数组.. ..我没有使用escape(thestringArray)将它发送到我的PHP文件 – user1073113