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

Форум PHP

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

 

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

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

тема: Создание одного массива из другого
 
 автор: amigo62   (02.08.2007 в 00:38)   письмо автору
 
 


<?php
$b
['id']=$a['id'][0];
$b['title']=$a['title'][0];
$b['body']=$a['body'][0];
//и т.д. в том же духе :(
?>
вопрос: есть ли возможность "автоматизировать" это нудное присвоение?

   
 
 автор: Proger   (02.08.2007 в 00:51)   письмо автору
 
   для: amigo62   (02.08.2007 в 00:38)
 

хМ.... а зачем этот таинственный [0] ? Для чего? Никогда ткого не видел!

Можно:


foreach ($b as $id=>$data) {
$a[$id][0] = $data;
}

Вроде так, вот только 0 меня чот сомневает! Поведуйте - чего он делает!

   
 
 автор: amigo62   (02.08.2007 в 01:12)   письмо автору
 
   для: Proger   (02.08.2007 в 00:51)
 

<?php
$rez
=mysql_query("SELECT id, title, body FROM table");
while(
$ar=mysql_fetch_assoc($rez)) $a[]=$ar;
?>

индекс ноль будутиметь все переменные по запросу первой строки. Далее будут и 1, и 2, и 3 и т.д., но это все обработается в цикле. Я вот подумал, может, так:
<?php
foreach($a as $key=>$val$b[$key]=$a[$key][0];
?>
a?

   
 
 автор: Trianon   (02.08.2007 в 09:36)   письмо автору
 
   для: amigo62   (02.08.2007 в 01:12)
 

>индекс ноль будутиметь все переменные по запросу первой строки. Далее будут и 1, и 2, и 3 и т.д., но это все обработается в цикле.

вот только первый индекс, а не второй.
Проще надо писать.

<?php 
$rez
=mysql_query("SELECT id, title, body FROM table"); 
while(
$b=mysql_fetch_assoc($rez)) 
{
   
// и здесь работать уже с $b['id'] , $b['title'], $b['body']
   
list($id$title$body) = $b;
   
// или даже прямо с $id, $title, $body
  //....

}
 
?> 

   
 
 автор: Unkind   (02.08.2007 в 14:56)   письмо автору
 
   для: Trianon   (02.08.2007 в 09:36)
 

list() не работает с ассоциативными массивами.

   
 
 автор: Trianon   (02.08.2007 в 15:11)   письмо автору
 
   для: Unkind   (02.08.2007 в 14:56)
 

верно. Крайне дурацкая функция.
Ну тогда вместо list($id, $title, $body) = $b;
 foreach($b as $k=>$v) $$k = $v;

   
 
 автор: Unkind   (02.08.2007 в 15:15)   письмо автору
 
   для: Trianon   (02.08.2007 в 15:11)
 

А мне кажется лучше mysql_fetch_array() и использовать list().

<?php
$result 
mysql_query("SELECT `id`, `title`, `body` FROM `table`;");

while(
$b mysql_fetch_array($result))  

   
// И здесь работать уже с $b['id'] , $b['title'], $b['body'] 
   
list($id$title$body) = $b
   
// или даже прямо с $id, $title, $body 
  //.... 


?>

   
 
 автор: Trianon   (02.08.2007 в 15:23)   письмо автору
 
   для: Unkind   (02.08.2007 в 15:15)
 

тогда уж mysql_fetch_row() .

Дело вкуса.
Я, например, предпочитаю работать с массивом полей.

   
 
 автор: Unkind   (02.08.2007 в 15:30)   письмо автору
 
   для: Trianon   (02.08.2007 в 15:23)
 

тогда уж mysql_fetch_row()
Мне лень было читать всю тему, я посмотрел на Ваш последний пост и решил, что нужно получить как ассоциативный массив, так и переменные с названиями, соответсвующими названиям полей.

В таком случае нужна именно функция mysql_fetch_array(), так как от mysql_fetch_row() имен полей не добьешься. А с mysql_fetch_assoc() придется применять foreach, как делали Вы.

Я, например, предпочитаю работать с массивом полей.
Я, например, тоже.

   
 
 автор: Trianon   (02.08.2007 в 15:33)   письмо автору
 
   для: Unkind   (02.08.2007 в 15:30)
 

> и решил, что нужно получить как ассоциативный массив, так и переменные с названиями, соответсвующими названиям полей.

Такого не бывает нужно никогда.
Необходимость такого может быть обусловлена только ошибкой в проектировании.
Соответственно, mysql_fetch_array() - функция, оставленная лишь для совместимости, на самом деле - паразит.

   
 
 автор: Unkind   (02.08.2007 в 15:42)   письмо автору
 
   для: Trianon   (02.08.2007 в 15:33)
 

Не нужно, конечно. Но иногда встречаются те, кто не слушает, что нужно, а что нет. Так что проще показать как такое решается, нежели отговорить...

   
 
 автор: amigo62   (02.08.2007 в 23:45)   письмо автору
 
   для: Unkind   (02.08.2007 в 15:42)
 

Спасибо, много интересных вариантов! Как раз и стремлюсь к тому чтобы проще писать но пока не всегда выходит:)

   
Rambler's Top100
вверх

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