我有一个很长的字符串,如: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);
但字符串会改变,我永远不会知道它会持续多长时间
答案 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);
}
}