我需要将大字符串变成一个很好的数组。字符串本身是标签和标签ID的列表。可以有任何数量的它们。以下是字符串的示例:29:funny,30:humor,2:lol
- id:tag_name。现在,我在将其转换为数组时遇到问题 - Array ( [29] => funny [30] => humor )
。我可以到达标签所在的部分
数组(
[0] =数组(
[0] = 29
[1] =搞笑
)
[1] =数组(
[0] = 30
[1] =幽默
)
)
我也看过数组函数,但似乎没有一个能帮助我。 任何人都可以帮助我吗?
答案 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);
?>