0

如果我有字符串:

123+0,456+1,789+2,

我了解我可以执行以下操作:

$test = 123+0,456+1,789+2,;
$test = explode(",", $test);

这会在“,”之间创建每个部分的数组。

然后我怎样才能在该区域的每个部分爆炸“+”?以及如何访问它?

我知道这可能是一个非常简单的问题,但我尝试过的一切都失败了。

谢谢你。

4

5 回答 5

3

为什么不再使用爆炸?这次用“+”而不是“,”作为分隔符:

$test = 123+0,456+1,789+2,;
$test = explode(",", $test);

foreach($test as $test_element){
    $explodedAgain = explode("+", $test_element);
    var_dump($explodedAgain);
}
于 2013-05-30T15:25:29.357 回答
2
$test = "123+0,456+1,789+2,";
$test2 = explode(",", $test);
foreach($test2 as &$v) {
    $v=explode("+", $v);
}

这会创建一个多维数组,您可以通过以下方式访问它:

$test2[1][0]; // =456
于 2013-05-30T15:26:46.677 回答
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',
    ),
)

primary parts are in $matches[1] (splits by ",") - for result under key 1 secondary splits are in $matches[2][1] and $matches[3][1]

于 2013-05-30T15:33:39.170 回答
0

将此添加到您的代码中:

$newArr = array();
foreach($test as $v)
{
    $newArr[] = explode('+', $v);
}

$newArr现在是包含您的数字的数组数组。

于 2013-05-30T15:30:11.020 回答
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);
}
于 2013-05-30T15:26:43.243 回答