我有这种模式
组1&安培; 12345,约翰] www.johnsite.com,千斤顶] www.jacksite.com,亚历] www.alexsite.com,豪] www.jorgesite.com,票据] www.billsite.com,罗伯特] WWW .robertsite.com ^组2&安培; 78954,约翰] www.johnsite.com,千斤顶] www.jacksite.com,亚历] www.alexsite.com,豪] www.jorgesite.com,票据] www.billsite.com,罗伯特] www.robertsite.com
我希望将模式分解为像这样的关联数组
ARRAY => {
[0] => 'GROUP1' {
[0] => '12345',
[1] => {
[0] => 'john]www.johnsite.com',
[1] => 'jack]www.jacksite.com',
[2] => 'alex]www.alexsite.com',
[3] => 'jorge]www.jorgesite.com',
[4] => 'bill]www.billsite.com',
[5] => 'robert]www.robertsite.com'
}
},
[1] => 'GROUP2' {
[0] => '78954',
[1] => {
[0] => 'john]www.johnsite.com',
[1] => 'jack]www.jacksite.com',
[2] => 'alex]www.alexsite.com',
[3] => 'jorge]www.jorgesite.com',
[4] => 'bill]www.billsite.com',
[5] => 'robert]www.robertsite.com'
}
}}
并像这样回应它(不显示组代码和成员网站地址)
Group1:john-jack-alex-jorge-bill-robert
第2组:john-jack-alex-jorge-bill-robert
答案 0 :(得分:0)
function data_explode($data){
$result = array();
$explodeArray = explode("^",$data);
foreach($explodeArray as $key => $value){
$explodeInnerArray = explode(",",$value);
foreach($explodeInnerArray as $valueInner){
if (substr( $valueInner, 0, 5 ) === "group"){
$result[] = explode("&",$valueInner);
} else {
$tempArray[] = $valueInner;
}
}
$result[$key][2] = $tempArray;
}
return $result;
}
使用此功能可以分解您的数据。
$data = "group1&12345,john]www.johnsite.com,jack]www.jacksite.com,alex]www.alexsite.com,jorge]www.jorgesite.com,bill]www.billsite.com,robert]www.robertsite.com^group2&78954,john]www.johnsite.com,jack]www.jacksite.com,alex]www.alexsite.com,jorge]www.jorgesite.com,bill]www.billsite.com,robert]www.robertsite.com";
$result = data_explode($data);
结果:
Array
(
[0] => Array
(
[0] => group1
[1] => 12345
[2] => Array
(
[0] => john]www.johnsite.com
[1] => jack]www.jacksite.com
[2] => alex]www.alexsite.com
[3] => jorge]www.jorgesite.com
[4] => bill]www.billsite.com
[5] => robert]www.robertsite.com
)
)
[1] => Array
(
[0] => group2
[1] => 78954
[2] => Array
(
[0] => john]www.johnsite.com
[1] => jack]www.jacksite.com
[2] => alex]www.alexsite.com
[3] => jorge]www.jorgesite.com
[4] => bill]www.billsite.com
[5] => robert]www.robertsite.com
[6] => john]www.johnsite.com
[7] => jack]www.jacksite.com
[8] => alex]www.alexsite.com
[9] => jorge]www.jorgesite.com
[10] => bill]www.billsite.com
[11] => robert]www.robertsite.com
)
)
)
答案 1 :(得分:0)
使用array_map
,explode
,implode
,array_slice
和preg_replace
函数的解决方案:
// supposing $text is your initial text content
$result = array_map(function($v){
$items = explode("&", $v);
$rest = explode(",", $items[1]);
return [
ucfirst($items[0]) => [
0 => $rest[0],
1 => array_slice($rest, 1)
]
];
}, explode("^",$text));
//print_r($result); // will output the resulting array
foreach ($result as $group) {
$key = key($group);
echo $key . " : " .implode("-", preg_replace("/\].+/","",$group[$key][1])). PHP_EOL;
}
输出:
Group1 : john-jack-alex-jorge-bill-robert
Group2 : john-jack-alex-jorge-bill-robert
答案 2 :(得分:0)
$var="group1&12345,john]www.johnsite.com,jack]www.jacksite.com,alex]www.alexsite.com,jorge]www.jorgesite.com,bill]www.billsite.com,robert]www.robertsite.com^group2&78954,john]www.johnsite.com,jack]www.jacksite.com,alex]www.alexsite.com,jorge]www.jorgesite.com,bill]www.billsite.com,robert]www.robertsite.com";
$levelOne=explode("^",$var);
$finalGroupArr=array();
$finalGroupNameText=array();
foreach($levelOne as $k=>$v){
$levelTwo=explode(",",$v);
if(isset($levelTwo[0])){
$groupArr=explode("&",$levelTwo[0]);
array_shift($levelTwo);
$finalGroupArr[$k]=array($groupArr[0]=>array(0=>$groupArr[1],1=>$levelTwo));
foreach($levelTwo as $v2){
$tempArr=explode("]",$v2);
$nameArr[]=$tempArr[0];
}
$finalGroupNameText[]=$groupArr[0].": ".implode("-",$nameArr);
unset($nameArr);
}
unset($levelTwo);
}
//For associative array you can use $finalGroupArr
echo "<pre>";print_r($finalGroupArr);
//For name print you can use following variable...
echo implode("<br/>",$finalGroupNameText);
结果: -
Array
(
[0] => Array
(
[group1] => Array
(
[0] => 12345
[1] => Array
(
[0] => john]www.johnsite.com
[1] => jack]www.jacksite.com
[2] => alex]www.alexsite.com
[3] => jorge]www.jorgesite.com
[4] => bill]www.billsite.com
[5] => robert]www.robertsite.com
)
)
)
[1] => Array
(
[group2] => Array
(
[0] => 78954
[1] => Array
(
[0] => john]www.johnsite.com
[1] => jack]www.jacksite.com
[2] => alex]www.alexsite.com
[3] => jorge]www.jorgesite.com
[4] => bill]www.billsite.com
[5] => robert]www.robertsite.com
)
)
)
)
group1: john-jack-alex-jorge-bill-robert
group2: john-jack-alex-jorge-bill-robert