[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как собрать массив из строчных данных
aleksey
Здравствуйте помогите пожалуйста понять алгоритм сборки данных в массив. надо собрать дерево категорий из строчных даных, все строки с ':' это данные которые должны быть в соответствующей категории. Пример данных

db1
catA
cat1a1
prod1:a0
prod2:a0
prod3:a0
cat2a2
prod1:a1
prod2:a1
prod3:a1
catB
cat1b1
prod1:b0
prod2:b0
prod3:b0
cat2b2
prod1:b1
prod2:b1
prod3:b1
db2
catC
cat1c1
prod1:c0
prod2:c0
prod3:c0
cat2c1
prod1:c1
prod2:c1
prod3:c1
catD
cat1d2
prod1:d0
prod2:d0
prod3:d0
cat2d2
prod1:d1
prod2:d1
prod3:d1


на выходе должен получится массив


[
'db1' =>
[

'catA' =>
[

'cat1a1' => ['prod1:a0', 'prod2:a0', 'prod3:a0'] ,
'cat2a2' => ['prod1:a1', 'prod2:a1', 'prod3:a1']
],

'catB' =>
[

'cat1b1' => ['prod1:b0', 'prod2:b0', 'prod3:b0'],
'cat2b2' => ['prod1:b1', 'prod2:b1', 'prod3:b1']
]
],

'db2' =>
[

'catC' =>
[

'cat1c1' => ['prod1:c0', 'prod2:c0', 'prod3:c0'] ,
'cat2c2' => ['prod1:c1', 'prod2:c1', 'prod3:c1']
],

'catD' =>
[

'cat1d1' => ['prod1:d0', 'prod2:d0', 'prod3:d0'],
'cat2d2' => ['prod1:d1', 'prod2:d1', 'prod3:d1']
]
]
];
walerus
А свои мысли есть какие нибудь ? ;)

Кодд
<?php

$string = 'db1
catA
cat1a1
prod1:a0
prod2:a0
prod3:a0
cat2a2
prod1:a1
prod2:a1
prod3:a1
catB
cat1b1
prod1:b0
prod2:b0
prod3:b0
cat2b2
prod1:b1
prod2:b1
prod3:b1
db2
catC
cat1c1
prod1:c0
prod2:c0
prod3:c0
cat2c1
prod1:c1
prod2:c1
prod3:c1
catD
cat1d2
prod1:d0
prod2:d0
prod3:d0
cat2d2
prod1:d1
prod2:d1
prod3:d1'
;

$array = explode("\r\n", $string);

// Or Use $trimmed = file('somefile.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);


$result = [];
foreach ($array as $item){

if (mb_substr($item, 0, 2, 'UTF-8') == 'db'){
$db = $item;
continue;
}

$cat = mb_substr($item, -1, 1, 'UTF-8');

if (ctype_upper($cat) && !is_numeric($cat)){
$catKey = $item;
continue;
}


if (is_numeric($cat) && !preg_match('/:/',$item)){
$subCat = $item;
continue;
}

$result[$db][$catKey][$subCat][] = $item;
}

print_r($result);


Результат

Array
(
[
db1] => Array
(
[
catA] => Array
(
[
cat1a1] => Array
(
[
0] => prod1:a0
[1] => prod2:a0
[2] => prod3:a0
)

[
cat2a2] => Array
(
[
0] => prod1:a1
[1] => prod2:a1
[2] => prod3:a1
)

)

[
catB] => Array
(
[
cat1b1] => Array
(
[
0] => prod1:b0
[1] => prod2:b0
[2] => prod3:b0
)

[
cat2b2] => Array
(
[
0] => prod1:b1
[1] => prod2:b1
[2] => prod3:b1
)

)

)

[
db2] => Array
(
[
catC] => Array
(
[
cat1c1] => Array
(
[
0] => prod1:c0
[1] => prod2:c0
[2] => prod3:c0
)

[
cat2c1] => Array
(
[
0] => prod1:c1
[1] => prod2:c1
[2] => prod3:c1
)

)

[
catD] => Array
(
[
cat1d2] => Array
(
[
0] => prod1:d0
[1] => prod2:d0
[2] => prod3:d0
)

[
cat2d2] => Array
(
[
0] => prod1:d1
[1] => prod2:d1
[2] => prod3:d1
)

)

)

)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.