2011-11-30 83 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