2012-01-02 63 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/>'); 
} 
?>