爆炸阵列

时间:2013-05-30 15:23:26

标签: php

如果我有字符串:

  

123 + 0456 + 1789 + 2,

我知道我可以做到以下几点:

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

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

如何在该区域的每个部分爆炸'+'?以及如何访问它?

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

谢谢。

5 个答案:

答案 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]