2012-01-02 40 views
1

我懷疑這是之前被問過的,但我不知道它實際上叫什麼,所以我什麼都找不到。解剖一個字符串

我正在創建一個基於瀏覽器的遊戲,其中玩家有一個10x10網格。每個網格正方形都有幾個方面,一些是二進制標記,另一些是十六進制值。

要存儲該信息在陣列中,我想給定的小區,以包含以下內容:

「9A0101」,其中圖9A是瓦片類型,0和1是有關地圖瓦片的二進制標誌。

我希望能夠將「9A0101」作爲單獨的變量分解爲「9A」,「0」,「1」,「0」和「1」。

TLDR:

如何在PHP中切分字符串?該字符串將始終具有相同的長度,並且我想要剪切的部分將始終處於相同的偏移量。

+0

有沒有你喜歡序列化的數據的原因是什麼?該數組可以像這樣存儲嵌套數組:'array('type'=> 0x9A,'flags'=> 5)'。 – 2012-01-02 02:57:34

+0

是的 - 我將從10行10列mysql表中存儲和使用網格。從我的理解,這是在sql表中處理這些事情的最佳方式 - 儘管如果我錯了,請讓我知道。 – user1125619 2012-01-02 03:00:19

+0

你應該修改你的數據庫設計,serailized數據在選擇中是致命的,你會偶然發現你不能用這些數據做的很多事情。 – xXx 2012-01-02 03:32:25

回答

0

substr()什麼的部分? :

<?php 
$str = '9A0101'; 
echo substr($str,0,2); 
echo substr($str,2,1); 
echo substr($str,3,1); 
echo substr($str,4,1); 
echo substr($str,5,1); 
?> 
2

使用substr()得到的字符串

<?php 
echo substr('9A0101', 0,2);  // 9A 
echo substr('9A0101', 2, 1); // 0 
echo substr('9A0101', 3, 1); // 1 
echo substr('9A0101', 4, 1); // 0 
echo substr('9A0101', 5, 1); // 1 
?> 
0

您可以在SUBSTR()函數

<?php 
$str = "9A0101"; 
$arr = Array(); 

$arr[0] = substr($str, -6, 2); 
$arr[1] = substr($str, -4, 1); 
$arr[2] = substr($str, -3, 1); 
$arr[3] = substr($str, -2, 1); 
$arr[4] = substr($str, -1, 1); 

foreach($arr as $key => $val) { 
    echo($key . "=>" . $val . '<br/>'); 
} 
?>