взорвать в ассоциативный массив переполнения стека

У меня есть этот образец

группа 1&12345, джон] www.johnsite.com, домкрат] www.jacksite.com, Алекс] www.alexsite.com, хорх] www.jorgesite.com, счет] www.billsite.com, роберт] www.robertsite.com ^ group2&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'
}
}}

и повторить это так (не отображать код группы и адрес веб-сайта участников)

Группа1: Джон-Джек-Алекс-Джордж-Билл-Роберт
Группа 2: Джон-Джек-Алекс-Джордж-Билл-Роберт

-2

Решение

Решение с использованием 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
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
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
)

)

)
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector