Получить многомерный массив из исходных html-данных

Darkstar

Новичок
Получить многомерный массив из исходных html-данных

К предыдуще задаче: как оказывается, у меня не было нормально подготовленного для php массива....

Условие: имеется запись в html/Word, которую можно редактировать c помощью различных замен и подстановочных символов:

*
|i=No|,70
;
|cv|,B,
;
|sah|,B,K,
;
|tv|,D,
;
*
где |i=No|,70 -- 70-ый номер, |cv| -- некое имя, а B, K -- его значение

Нужно получить для первого столбца эквивалент:

$arr[70]["|cv|"][0]= "B";
$arr[70]["|sah|"][0]= "B";
$arr[70]["|sah|"][1]= "K";
$arr[70]["|tv|"][0]= "D";




После
PHP:
 $ar2 = explode(";",$str);
получается

Array ( [0] => |i=No|,70 [1] => |cv|,B, [2] => |sah|,B,K, [3] => |tv|,D,)

Но дальше затык. Не могу получить многомерный массив.
 

dimagolov

Новичок
теперь дели элементы по запятым и первый элемент делай ключем для элемента-пустого массива (если его не существует еще), а остальные элементами, которые в этот массив добавляешь.
 

Darkstar

Новичок
Как, чем делить. Не работает дальше explode -- потому что это массив, а не строка.

-~{}~ 13.08.09 13:27:

Так что -- никто не знает...?
 

Darkstar

Новичок
А... вот так вот. Ну кажется, понял.

-~{}~ 13.08.09 18:04:

Нет, не понял.
Я не знаю, как рекурсивно вписать в единую структуру массива, так чтобы она ПРИБАВЛЯЛАСЬ при каждом ходе цикла.

Допустим, я пишу через merge (бред):

for($i = 0; $i < sizeof($ar2); ++$i)
{
$q1 = explode(",",$ar2[$i]);
print_r($q1);
echo "<br><br>";

$q2 = explode(",",$ar2[$i+1]);
print_r($q2);
echo "<br><br>";

$q3=array_merge_recursive($q1,$q2);
}
 

dimagolov

Новичок
Darkstar, при чем здесь array_merge_recursive, если $q1[0] должен быть распознан как |i=No| и тогда $q1[1] должен быть создан как индекс главного создаваемого массива, а следующие найденные $q1[0] до следующего |i=No| будут ключами в массиве-элементе, значениями же будет тоже массив из $q1[1], $q1[2] и т.д.
 

Darkstar

Новичок
Я не знаю какую функцию и как использовать. Я php плохо знаю.
 

dimagolov

Новичок
никаких ф-й тут не нужно, просто создавать массив нужной структуры из исходного
 

Darkstar

Новичок
Dimagolov: т.е. вы считаете, что здесь все через тот же for, никаких дополнительных операторов не нужно?
 

dimagolov

Новичок
никаких дополнительных операторов не нужно
странная формулировка. если твой код не делает то, что тебе надо, но надо дописать операторы для того, чтобы он делал нужное, разве нет?
 
Сверху