如果我有字符串:
123+0,456+1,789+2,
我了解我可以执行以下操作:
$test = 123+0,456+1,789+2,;
$test = explode(",", $test);
这会在“,”之间创建每个部分的数组。
然后我怎样才能在该区域的每个部分爆炸“+”?以及如何访问它?
我知道这可能是一个非常简单的问题,但我尝试过的一切都失败了。
谢谢你。
如果我有字符串:
123+0,456+1,789+2,
我了解我可以执行以下操作:
$test = 123+0,456+1,789+2,;
$test = explode(",", $test);
这会在“,”之间创建每个部分的数组。
然后我怎样才能在该区域的每个部分爆炸“+”?以及如何访问它?
我知道这可能是一个非常简单的问题,但我尝试过的一切都失败了。
谢谢你。
为什么不再使用爆炸?这次用“+”而不是“,”作为分隔符:
$test = 123+0,456+1,789+2,;
$test = explode(",", $test);
foreach($test as $test_element){
$explodedAgain = explode("+", $test_element);
var_dump($explodedAgain);
}
$test = "123+0,456+1,789+2,";
$test2 = explode(",", $test);
foreach($test2 as &$v) {
$v=explode("+", $v);
}
这会创建一个多维数组,您可以通过以下方式访问它:
$test2[1][0]; // =456
preg_match_all('/((\d+)\+(\d)),+/', $test, $matches);
var_export($matches);
array (
0 =>
array (
0 => '123+0,',
1 => '456+1,',
2 => '789+2,',
),
1 =>
array (
0 => '123+0',
1 => '456+1',
2 => '789+2',
),
2 =>
array (
0 => '123',
1 => '456',
2 => '789',
),
3 =>
array (
0 => '0',
1 => '1',
2 => '2',
),
)
primary parts are in $matches[1] (splits by ",") - for result under key 1 secondary splits are in $matches[2][1] and $matches[3][1]
将此添加到您的代码中:
$newArr = array();
foreach($test as $v)
{
$newArr[] = explode('+', $v);
}
$newArr
现在是包含您的数字的数组数组。
分解字符串时,会返回一个数组。在你的情况下$test
是一个数组。因此,您需要遍历该数组以访问每个部分。
foreach($test as $subtest){
}
在上面的循环中,每个部分现在都列为$subtest
. 然后,您可以再次$subtest
使用 explode
“+”分解字符串,这将再次返回一个包含位的数组。然后,您可以使用这些位。
一个完整的例子是:
$test = 123+0,456+1,789+2,;
$test = explode(",", $test);
foreach($test as $subtest){
$bits= explode("+", $subtest);
print_r($bits);
}