Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: обработка массива
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » обработка массива

Страниц (1): [1]
 

1. and_07 - 24 Февраля, 2014 - 14:10:35 - перейти к сообщению
исходные данные файл
PHP:
скопировать код в буфер обмена
  1.  
  2. Все товары
  3. Все товары / Авто
  4. Все товары / Авто / Автокосметика
  5. Все товары / Авто / Автокосметика / Автошампуни
  6. Все товары / Авто / Автокосметика / Автоэмали
  7. Все товары / Авто / Автокосметика / Грунтовка
  8. Все товары / Авто / Автокосметика / Нанопокрытия
  9. Все товары / Авто / Автокосметика / Очистители
  10. Все товары / Авто / Автокосметика / Полироли
  11. Все товары / Авто / Автокосметика / Шпатлевка
  12. Все товары / Авто / Автохимия
  13. Все товары / Авто / Автохимия / Антикоры
  14. Все товары / Авто / Автохимия / Антифризы
  15. Все товары / Авто / Автохимия / Герметики
  16.  



1 читаю из файла получаю массив
PHP:
скопировать код в буфер обмена
  1.  
  2. $arr = array(
  3. 0 =>Все товары,
  4. 1=> Все товары / Авто
  5. ....
  6. )
  7.  



2 далее перевожу массив в такой вид
PHP:
скопировать код в буфер обмена
  1.  
  2. $arr = array(
  3. 0 =>Все товары,
  4. 1=> array(
  5.            0=> Все товары,
  6.            1=> Авто
  7. ),
  8. 2=>array(
  9.            0=> Все товары,
  10.            1=> Авто,
  11.            2 => Автокосметика
  12. ),
  13. ....
  14. )
  15.  





не удается построить массив с ерархией

PHP:
скопировать код в буфер обмена
  1.  
  2. $arr = array(
  3. 'Все товары' => array(
  4.                                    'Авто'=>array(
  5.                                            'Автокосметика'=> array(
  6.                                             0=> Автошампуни,
  7.                                             1=> Автоэмали,
  8.                                             ....
  9.                                            )
  10.                                      ),
  11.  
  12.        ),
  13. ....
  14. )
  15.  
  16.  
2. Nikolai12 - 24 Февраля, 2014 - 14:39:48 - перейти к сообщению
Лучше сразу хранить данные в таком виде:
PHP:
скопировать код в буфер обмена
  1.  
  2.     'Все товары' => array(
  3.          //.....
  4.     );
  5. );
  6.  


Для сохранения можно сериализовать массив и сохранить полученную строку в файл.

PHP:
скопировать код в буфер обмена
  1.  
  2. $file = fopen('file.txt', 'w');
  3. $string = serialize($array);
  4. fwrite($file, $string);
  5. fclose($file);
  6.  
3. Ch_chov - 24 Февраля, 2014 - 14:41:50 - перейти к сообщению
Nikolai12 пишет:
Лучше сразу хранить данные в таком виде

Тут вроде обратная задача. Из файла получить массив правильной структуры.
4. and_07 - 24 Февраля, 2014 - 14:43:13 - перейти к сообщению
))) я понимаю что лучше
только эт не решает задачу
5. Ch_chov - 24 Февраля, 2014 - 15:05:52 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $data = file('data.txt');
  2.  
  3. $code = '';
  4. foreach ($data as $line) {
  5.   $code .= '$result["' . str_replace(' / ', '"]["', trim($line)) . '"] = null;';
  6. }
  7. $result = eval($code . 'return $result;')
6. and_07 - 25 Февраля, 2014 - 08:11:22 - перейти к сообщению
всем пасиб
думаю тема закрыта

 

Powered by ExBB FM 1.0 RC1