如果我有字符串:
123 + 0456 + 1789 + 2,
我知道我可以做到以下几点:
$test = 123+0,456+1,789+2,;
$test = explode(",", $test);
这会在','之间创建每个部分的数组。
如何在该区域的每个部分爆炸'+'?以及如何访问它?
我知道这可能是一个非常简单的问题,但我尝试的一切都失败了。
谢谢。
答案 0 :(得分:3)
为什么不再使用爆炸?这次以“+”代替“,”作为分隔符:
$test = 123+0,456+1,789+2,;
$test = explode(",", $test);
foreach($test as $test_element){
$explodedAgain = explode("+", $test_element);
var_dump($explodedAgain);
}
答案 1 :(得分:2)
$test = "123+0,456+1,789+2,";
$test2 = explode(",", $test);
foreach($test2 as &$v) {
$v=explode("+", $v);
}
这会创建一个多维数组,您可以通过以下方式访问它:
$test2[1][0]; // =456
答案 2 :(得分:0)
当爆炸字符串时,会返回一个数组。在您的情况下,$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);
}
答案 3 :(得分:0)
将此添加到您的代码中:
$newArr = array();
foreach($test as $v)
{
$newArr[] = explode('+', $v);
}
$newArr
现在是一个包含数字的数组数组。
答案 4 :(得分:0)
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',
),
)
主要部分在$ matches [1]中(按“,”拆分) - 对于键1下的结果,二次拆分在$ matches [2] [1]和$ matches [3] [1]