如何在PHP中将这个字符串拆分成两个数组?字符串中可能有很多项。
$str = "20x9999,24x65,40x5";
我需要从这个字符串中得到两个数组:
$array1 = array(20,24,40); $array2 = array(9999,65,5);
我尝试了很多preg_split,slice,regex的实现。我不能完成它...我需要帮助!
raogr8fs1#
你可以用逗号explode字符串,然后用x分解每个值,将结果值插入两个数组:
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
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 )
Demo on 3v4l.org请注意,从PHP7.1开始,您可以使用数组解构而不是list,因此您可以只写
list
[$x, $y] = explode('x', $xy);
而不是
list($x, $y) = explode('x', $xy);
Demo on 3v4l.org
ddrv8njm2#
我想用preg_split,我们可以这样做:
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" }
2条答案
按热度按时间raogr8fs1#
你可以用逗号
explode
字符串,然后用x
分解每个值,将结果值插入两个数组:或者,您可以使用
preg_match_all
,匹配x
两侧的数字:在这两种情况下,输出为:
Demo on 3v4l.org
请注意,从PHP7.1开始,您可以使用数组解构而不是
list
,因此您可以只写而不是
Demo on 3v4l.org
ddrv8njm2#
我想用
preg_split
,我们可以这样做:输出