2011-11-30 74 views
1

将字符串转换为数组我有一个发送数据到我的PHP文件中的JavaScript代码...我有困难,在PHP

的这个样本值是:

array(
    array('story_name'=>'mystory', 'priority'=>1), 
    array('story_name'=>'mystory2', 'priority'=>2) 
) 

所以我的问题是如何将此字符串转换为相同格式的PHP数组,以便我可以追加到我的查询?

+5

是否有使用* this *格式而不是标准格式的原因? (如JSON) – Roman

+0

你不能通过JS发送数组到PHP。只有某些格式的字符串(例如JSON)。 –

+0

是的,这是一个字符串不是一个实际的数组.. ..我没有使用escape(thestringArray)将它发送到我的PHP文件 – user1073113

回答

3

使用JSON:

echo json_encode($yourarray); 
echo json_decode($_GET['fromjs']); 
+0

你可以序列化()然后urlencode()它,但json_encode在各种方式更好(更小,更可读,更便携式...) – voidstate

+0

问题是那些数组只是一个字符串,而不是一个数组结构,仍然json可以做到这一点? – user1073113

+0

将其转换为数组。为什么在这里使用字符串...是否有一个原因,它必须是一个字符串呢?我对我没有意义;)在js中处理数组结构并将其转换为JSON字符串以与PHP交互。 –

1

你确定要发送本机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 
    } 
] 
1

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文件的字符串将被分裂回阵列。

http://www.hscripts.com/tutorials/php/jsArrayToPHP.php

1

你可以使用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