2011-07-21 27 views
1

嗨,大家好,我必須將幾個函數從AS移植到PHP,但我遇到了一個小問題。ActionScript加入/拆分

有一個數組,我們稱之爲arr1。有一個開關,是推動參數數組,但開關結束後,我被堵在join("").split("");

var arr1 = []; 
    switch (myString) 
    { 
     case "apple": 
     { 
      arr1.push("apple"); 
      break; 
     } 
    } 
} 
arr1 = arr1.join("").split(""); 

我知道很簡單,但我從未有過在閃存陣列的經驗,我才意識到join("")被用來將數組轉換爲字符串,但是沒有將該數組拆分?

回答

0

這段代碼正在做的是首先將所有的數組值連接在一起形成一個字符串,然後將它們拆分成一個單獨的字符數組。 PHP的等效看起來會是這樣(tested):

$arr1 = array("apple"); //arr1 after the switch 
$arr1 = str_split(implode('',$arr1)); 
+0

由於某種原因,它的執行不正確,我的函數出錯了。 – Anonymous

+0

對,對不起。 explode()不允許空的分隔符,你必須改用'str_split()'。 – shanethehat

+0

謝謝你做到了。 – Anonymous

2

join(delimiter:*)將從數組,其中每個從數組中的項目由任何其它的分隔是(默認爲NaN分離創建一個字符串,如果你感興趣)。

split(delimiter:*, limit:Number = 0x7fffffff)根據任何分隔符將一個字符串咬入極限長度數組中。

雖然這可能看起來像它應輸出同一陣列一致:

var delim:String = "someString"; 
arr.join(delim).split(delim) 

在這種情況下,它實際上將導致不同的陣列:

var arr:Array = ['asomeStringb','c','d'] 
var delim:String = "someString"; 
trace(arr.join(delim).split(delim))//[a,b,c,d] 

如果delimiter是一個空字符串對於拆分,它會打破字符串的字符:

var arr:Array = ['ab','c','d'] 
var delim:String = ""; 
trace(arr.join(delim).split(delim))//[a,b,c,d] 

Hope這有助於。

PHP等價可能是:

$input = array(/*stuff...*/); 
// join is an alias of implode. I used it here because the AS method is join. 
$input = /* explode(<-- won't work */ str_split("", join($input)); 

邊注:在AS3始終鍵入您的變量儘可能嚴格 - 它確實有助於到底。 var arr1應該是var arr1:Array

+0

我很抱歉,但應該是什麼PHP相當於此? – Anonymous

+0

查看我對我的回答的評論,你不能使用'explode'和空分隔符。 – shanethehat