Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Разобрать многомерный массив
 
 автор: Night_Wolf   (08.11.2005 в 11:39)   письмо автору
 
 

Может вопрос кому-то глупым покажеться, простите.
Не могу правильно разоборать такой массив:

Array ( [0] => Array ( [NAME] => Техническая поддержка Photoshop 4 [ID] => 139 [AUTHOR] => Кен Ойер [PUBLISH] => Комиздат [YEAR] => 1998 [types] => Array ( [0] => Графика и дизайн ) ) [1] => Array ( [NAME] => Мир Corel Draw! [ID] => 112 [AUTHOR] => Михаэль Оссвальд [PUBLISH] => BHV [YEAR] => 1995 [types] => Array ( [0] => Графика и дизайн ) ) [2] => Array ( [NAME] => Внутренний мир TCP / IP [ID] => 285 [AUTHOR] => Хейвуд Дрю [PUBLISH] => DiaSoft [YEAR] => 2003 [types] => Array ( [0] => Коммуникации и сети [1] => Интернет-протоколы ) ) ) 


Мне надо записать такой массив в бд:

$my_sql->query($db, "INSERT INTO $db[prefix]_books VALUES('ID', 'NAME', 'AUTHOR', 'PUBLISH', 'YEAR', 'types' )", 0); 


Заранее спасибо всем кто поможет.

   
 
 автор: Night_Wolf   (08.11.2005 в 12:44)   письмо автору
 
   для: Night_Wolf   (08.11.2005 в 11:39)
 

types тоже массив получаеться, можно его разобрать в переменную, значения разделенную например каким-то символом, а потом записать?

   
 
 автор: cheops   (08.11.2005 в 12:52)   письмо автору
 
   для: Night_Wolf   (08.11.2005 в 11:39)
 

Ну... попробуйте так
<?php
  
foreach($arr as $line)
  {
     
$sql[] = "('$line[ID]','$line[NAME]','$line[AUTHOR]','$line[PUBLISH]','$line[YEAR]','".$line['types'][0]."')";
  }
  
$query "INSERT INTO $db[prefix]_books VALUES ".implode(",",$sql);
  
$my_sql->query($db$query0);
?>

   
 
 автор: Night_Wolf   (08.11.2005 в 13:03)   письмо автору
 
   для: cheops   (08.11.2005 в 12:52)
 

$line['types'][0] выводит только первое значение.

Тут наверное надо $line['types'][$i]; с помощью $i++... Но как это делать...

   
 
 автор: Night_Wolf   (08.11.2005 в 13:29)   письмо автору
 
   для: Night_Wolf   (08.11.2005 в 13:03)
 

Я пробовал вот так
foreach($arr as $line)
{
$sql[] = "('$line[ID]','$line[NAME]','$line[AUTHOR]','$line[PUBLISH]','$line[YEAR]','".$line['types'][0]."|".$line['types'][1]."|".$line['types'][2]."')";
}

Но это ведь не грамотно и не красиво...

   
 
 автор: Night_Wolf   (08.11.2005 в 14:46)   письмо автору
 
   для: Night_Wolf   (08.11.2005 в 13:29)
 

Выходит ничего тут не сделаешь?
Загнать суб-массив в одну переменную невозможно...

   
 
 автор: cheops   (08.11.2005 в 20:49)   письмо автору
 
   для: Night_Wolf   (08.11.2005 в 14:46)
 

Можно и в одну переменную загнать массив, наример так
<?php 
  
foreach($arr as $line
  { 
     
$sql[] = "('$line[ID]','$line[NAME]','$line[AUTHOR]','$line[PUBLISH]','$line[YEAR]','".implode("|",$line['types'])."')"
  } 
  
$query "INSERT INTO $db[prefix]_books VALUES ".implode(",",$sql); 
  
$my_sql->query($db$query0); 
?>

Только при выборке запись types необходимо будет опять разбить уже при помощи функции explode()
<?php
  $arr 
explode("|",$types);
?>

   
 
 автор: Night_Wolf   (08.11.2005 в 20:57)   письмо автору
 
   для: cheops   (08.11.2005 в 20:49)
 

Спасибо cheops, это то что мне нужно!>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования