爆炸长字符串 - PHP

时间:2015-01-16 08:18:46

标签: php mysql arrays

我有一个很长的字符串,如:B1C1F4G6H4I7J1J8L5O6P2Q1R6T5U8V1Z5,我需要在对上展开它,所以在这种情况下1 - B1 2 - C1等等......

我需要的原因是每对在数据库中包含1个信息,所以我必须采取每一对并为MySQL搜索做一些循环或其他事情

我正在考虑将这种刺痛转换成这样的阵列:

1=> B1
2=> C1
3=> F4

然后用类似

之类的东西来预告
foreach ($array as $arr)
{
  //and here come database search
}

但也许我完全错了,并说出我尝试用ERROR完成的所有事情,所以大家好我的任何建议,如果有人有时间写一个示例代码就会很棒。

谢谢!

P.S。 首先,我想的是:

$string[0] = substr($string,0,2);
$string[1] = substr($string,2,4);

但字符串会改变,我永远不会知道它会持续多长时间

4 个答案:

答案 0 :(得分:2)

您可以随时访问类似数组的字符串,而无需像这样对其执行任何操作:

$string='B1C1F4G6H4I7J1J8L5O6P2Q1R6T5U8V1Z5';
for($i=0;$i<strlen($string)/2;$i++)
{
    $arr[]=$string[$i*2].$string[($i*2)+1];
}

print_r($arr);

答案 1 :(得分:2)

您可以使用str_split()

$str = 'B1C1F4G6H4I7J1J8L5O6P2Q1R6T5U8V1Z5';
$ar = str_split($str,2);
print_r($ar);

确保您访问零索引的第一个元素。

答案 2 :(得分:1)

Php函数str_split可能有效

>>> $text = 'B1C1F4G6H4I7J1J8L5O6P2Q1R6T5U8V1Z5'
>>> str_split($text, 2)
=> [
       "B1",
       "C1",
       "F4",
       "G6",
       "H4",
       "I7",
       "J1",
       "J8",
       "L5",
       "O6",
       "P2",
       "Q1",
       "R6",
       "T5",
       "U8",
       "V1",
       "Z5"
   ]

答案 3 :(得分:0)

你应该使用递归:

$string = "B1C1F4G6H4I7J1J8L5O6P2Q1R6T5U8V1Z5";
$array = recursion($string);

print_r($array);



function recursion ($string, $array = array()){
    if (strlen($string) < 1){
        return $array;
        }else{
            $array[] = substr($string, 0 ,2);
            return recursion(substr($string, 2), $array);
        }

}