【发布时间】:2019-11-30 03:12:51
【问题描述】:
如何在 PHP 中将此字符串拆分为两个数组?字符串中可能有很多项。
$str = "20x9999,24x65,40x5";
我需要从这个字符串中得到两个数组:
$array1 = array(20,24,40);
$array2 = array(9999,65,5);
我已经尝试了许多 preg_split、slice、regex 的实现。我无法完成...我需要帮助!
【问题讨论】:
如何在 PHP 中将此字符串拆分为两个数组?字符串中可能有很多项。
$str = "20x9999,24x65,40x5";
我需要从这个字符串中得到两个数组:
$array1 = array(20,24,40);
$array2 = array(9999,65,5);
我已经尝试了许多 preg_split、slice、regex 的实现。我无法完成...我需要帮助!
【问题讨论】:
您可以用逗号explode 字符串,然后用x 分解每个值,将结果值插入到两个数组中:
$str = "20x9999,24x65,40x5";
$array1 = array();
$array2 = array();
foreach (explode(',', $str) as $xy) {
list($x, $y) = explode('x', $xy);
$array1[] = $x;
$array2[] = $y;
}
或者,您可以使用preg_match_all,匹配x 两侧的数字:
preg_match_all('/(\d+)x(\d+)/', $str, $matches);
$array1 = $matches[1];
$array2 = $matches[2];
在这两种情况下,输出都是:
Array
(
[0] => 20
[1] => 24
[2] => 40
)
Array
(
[0] => 9999
[1] => 65
[2] => 5
)
【讨论】:
我想用preg_split,我们可以这样做:
$str = '20x9999,24x65,40x5';
$array1 = $array2 = array();
foreach (preg_split("/,/", $str, -1, PREG_SPLIT_NO_EMPTY) as $key => $value) {
$val = preg_split("/x/", $value, -1, PREG_SPLIT_NO_EMPTY);
array_push($array1, $val[0]);
array_push($array2, $val[1]);
}
var_dump($array1);
var_dump($array2);
array(3) {
[0]=>
string(2) "20"
[1]=>
string(2) "24"
[2]=>
string(2) "40"
}
array(3) {
[0]=>
string(4) "9999"
[1]=>
string(2) "65"
[2]=>
string(1) "5"
}
【讨论】:
preg_split 这样使用比简单的 explode 贵很多