大字符串到漂亮的数组

时间:2011-12-15 15:44:17

标签: php multidimensional-array explode

我需要将大字符串变成一个很好的数组。字符串本身是标签和标签ID的列表。可以有任何数量的它们。以下是字符串的示例:29:funny,30:humor,2:lol - id:tag_name。现在,我在将其转换为数组时遇到问题 - Array ( [29] => funny [30] => humor )。我可以到达标签所在的部分

  

数组(

     
    

[0] =数组(

         
      

[0] = 29

             

[1] =搞笑

    
         

         

[1] =数组(

         
      

[0] = 30

             

[1] =幽默

    
         

  
     

我也看过数组函数,但似乎没有一个能帮助我。 任何人都可以帮助我吗?

5 个答案:

答案 0 :(得分:0)

这里有一些代码可以帮助您:

$str = "29:funny,30:humor,2:lol";
$arr = array();
foreach (explode(',', $str) as $v) {
    list($key, $val) = explode(':', $v);
    $arr[$key] = $val;
}
print_r($arr);
/* will output:
Array
(
    [29] => funny
    [30] => humor
    [2] => lol
)
*/

例如,您可以用array_map替换foreach,但我认为这样对您来说更简单。

以下是其工作示例:http://codepad.org/4BpnCiEJ

答案 1 :(得分:0)

您可以使用explode()来执行此操作,但需要两次传递。第一个将字符串拆分成对(爆炸(',',$ string))和第二个拆分每个配对

$arr = explode (',', $string);
foreach ($arr as &$pairing)
{
    $pairing = explode (':', $pairing);
}

答案 2 :(得分:0)

$string = '29:funny,30:humor,2:lol';
$arr1   = explode(',', $string);
$result = array();
foreach ($arr1 as $element1) {
    $result[]  = explode(':', $element1);
}
print_r($result);

答案 3 :(得分:0)

您可以使用preg_match_all

preg_match_all('#([\d]+):([a-zA-Z0-9]+)#', $sString, $aMatches);

// Combine the keys with the values.
$aArray = array_combine($aMatches[1], $aMatches[2]);

echo "<pre>";
print_r($aArray);
echo "</pre>";

输出:

Array
(
    [29] => funny
    [30] => humor
    [2] => lol
)

答案 4 :(得分:0)

<?php

$test = '29:funny,30:humor,2:lol';

$tmp_array = explode(',', $test);

$tag_array = ARRAY();

foreach ($tmp_array AS $value) {
    $pair = explode(':', $value);
    $tag_array[$pair[0]] = $pair[1];
}

var_dump($tag_array);

?>