大字符串到漂亮数组


Big string to nice array

我需要把大字符串变成一个漂亮的数组。字符串本身是标签和标签id的列表。它们可以是任意数量的。字符串示例如下:29:funny,30:humor,2:lol - id:tag_name。现在,我有问题把它转换成数组- Array ( [29] => funny [30] => humor )。我可以看到标签是这样的

数组

[0] =

[0] = 29

[1] = funny

)

[1] =

[0] = 30

[1] =幽默

)

)

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

下面是一些代码:

$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

您可以使用explosion()来完成此操作,尽管它需要两次传递。第一个将字符串拆分为对(explosion (',', $string)),第二个将每个对

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

您可以使用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
)

<?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);
?>