如果我有字符串:爆炸陣列
123 + 0456 + 1789 + 2,
我明白我可以執行以下操作:
$test = 123+0,456+1,789+2,;
$test = explode(",", $test);
這產生了','之間的每個部分的數組。
我該如何在該區域的每個部分爆炸'+'?我如何訪問它?
我知道這可能是一個非常簡單的問題,但是我所嘗試過的一切都失敗了。
謝謝。
如果我有字符串:爆炸陣列
123 + 0456 + 1789 + 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
是一個數組。所以你需要遍歷該數組來訪問每個部分。
foreach($test as $subtest){
}
在上面的循環中,每個部分現在被列爲$subtest
。然後,您可以使用explode
再次爆炸$subtest
以按'+'拆分字符串,這將再次返回一個數組。然後你可以使用這些位。
一個完整的例子是:
$test = 123+0,456+1,789+2,;
$test = explode(",", $test);
foreach($test as $subtest){
$bits= explode("+", $subtest);
print_r($bits);
}
$test = "123+0,456+1,789+2,";
$test2 = explode(",", $test);
foreach($test2 as &$v) {
$v=explode("+", $v);
}
這個包裝箱一個多維數組,你可以訪問它這樣說:
$test2[1][0]; // =456
+1爲指針解決方案 – zessx
添加到您的代碼:
$newArr = array();
foreach($test as $v)
{
$newArr[] = explode('+', $v);
}
$newArr
現在是一個包含您的數字的數組數組。
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',
),
)
主要部分是在$匹配[1](由分割 「」) - 下鍵1個分割結果是在$匹配[2] [1]和$匹配[3] [1]
[數學之前分割一個字符串]可能的重複(http://stackoverflow.com/questions/16794313/splitting-a-string-before-math) – andrewsi