我有这样的字符串1-male,2-female
我想把它作为数组如下
array(
1 => male,
2 => female
);
Run Code Online (Sandbox Code Playgroud)
我可以使用foreach Ex来做到这一点:
$str1 = '1-male,2-female';
$outPutArr = array();
$arr1 = explode(',' $str1);
foreach($arr1 as $str2){
$arr2 = explode('-', $str2);
$outPutArr[$arr2[0]] = $arr2[1];
}
Run Code Online (Sandbox Code Playgroud)
有没有其他捷径可以做到这一点?
您可以使用简单的正则表达式并将preg_match_all其简化为:
preg_match_all('/(\d+)-([^,]+)/', $input, $matches);
$array = array_combine($matches[1], $matches[2]);
Run Code Online (Sandbox Code Playgroud)
array_combine 将它混合回:
Array
(
[1] => male
[2] => female
)
Run Code Online (Sandbox Code Playgroud)
另一种常见的方法是使用parse_str()后strtr()更换任何定界符您的字符串已经变成=和&.