我需要把大字符串变成一个漂亮的数组。字符串本身是标签和标签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);
?>