在PHP中使用String构建数组

rka*_*yan 0 php arrays string

我有这样的字符串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)

有没有其他捷径可以做到这一点?

mar*_*rio 7

您可以使用简单的正则表达式并将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()更换任何定界符您的字符串已经变成=&.