【问题标题】:Build Array from String in PHP在 PHP 中从字符串构建数组
【发布时间】:2013-07-15 20:22:44
【问题描述】:

我有这样的字符串1-male,2-female 我想把它做成如下的数组

array(
    1 => male,
    2 => female
);

我可以通过使用 foreach 来做到这一点 例如:

$str1 = '1-male,2-female';
$outPutArr = array();
$arr1 = explode(',' $str1);
foreach($arr1 as $str2){
    $arr2 = explode('-', $str2);
    $outPutArr[$arr2[0]] = $arr2[1];
}

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

【问题讨论】:

标签: php arrays string


【解决方案1】:

您可以使用简单的正则表达式和preg_match_all 将其简化为:

preg_match_all('/(\d+)-([^,]+)/', $input, $matches);
$array = array_combine($matches[1], $matches[2]);

array_combine 将其混合回:

Array
(
    [1] => male
    [2] => female
)

另一种常见的方法是在strtr() 之后使用parse_str() 将字符串中的任何分隔符替换为=&

【讨论】:

  • 海哥感谢您的回答。但是什么是输入?和比赛?我必须在那里放什么?
  • $input 是您的$str1,而$matches 是您不必提供的结果变量和副产品。
  • 非常感谢并喜欢它 :) 兄弟,我需要等待 9 分钟然后我接受答案 :) 再次非常感谢 :)
【解决方案2】:

这应该可以工作,虽然我没有测试过。这只是为您提供更多选择的另一种方式:

$String = "1-male,2-female";
$Array = array();
foreach (array_chunk(explode(array('-', ','), $String), 2) as $Ar)
  $Array[$Ar[0]] = $Ar[1];

它是如何工作的:

它将数据拆分成这种形式的数组:

array('1', 'male', '2', 'female')

这就是爆炸的目的。然后将其重新排列为chunks of 2,如下所示:

array(array('1', 'male'), array('2', 'female'))

最后,在 foreach 中,它将每个数组合并为它的第一个元素(键)和第二个元素(值)。

array('1' => 'male', '2' => 'female')

请注意,如果数组键重复,则该值将被覆盖。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-15
    • 2010-09-28
    • 1970-01-01
    • 2016-11-04
    • 2011-06-17
    • 1970-01-01
    • 2016-01-21
    • 2015-09-30
    相关资源
    最近更新 更多