【问题标题】:Big string to nice array大字符串到漂亮的数组
【发布时间】:2012-01-21 07:16:43
【问题描述】:
我需要把大字符串变成一个漂亮的数组。字符串本身是标签和标签 ID 的列表。它们的数量可以是任意数量。以下是字符串示例:29:funny,30:humor,2:lol - id:tag_name。现在,我在将其转换为数组时遇到问题 - Array ( [29] => funny [30] => humor )。我可以到达标签所在的部分
数组(
[0] = 数组(
[0] = 29
[1] = 有趣
)
[1] = 数组 (
[0] = 30
[1] = 幽默
)
)
我也看过数组函数,但似乎没有一个可以帮助我。
谁能帮帮我?
【问题讨论】:
标签:
php
multidimensional-array
explode
【解决方案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
)
*/
例如,您可以将 foreach 替换为 array_map,但我认为这样对您来说更简单。
这是一个工作示例:http://codepad.org/4BpnCiEJ
【解决方案2】:
您可以使用explode() 来执行此操作,但需要通过两次。第一个将字符串分成配对(explode (',', $string)),第二个将每个配对分开
$arr = explode (',', $string);
foreach ($arr as &$pairing)
{
$pairing = explode (':', $pairing);
}
【解决方案3】:
$string = '29:funny,30:humor,2:lol';
$arr1 = explode(',', $string);
$result = array();
foreach ($arr1 as $element1) {
$result[] = explode(':', $element1);
}
print_r($result);
【解决方案4】:
您可以使用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
)
【解决方案5】:
<?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);
?>