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

Форум PHP

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

 

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

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

тема: многомерный массив
 
 автор: sidPR   (11.09.2007 в 14:46)   письмо автору
 
 

Помогите пожалуйста. такая ситуация из базы получаю инфу WHILE:


Array (  
 [tamplate] => index.html  
 [content] => test  
 [placeholder] => content )  
  
 Array (  
 [tamplate] => index.html  
 [content] => test  
 [placeholder] => right ) 



в конце хачю получить чтото типо


 Array ( [index.html] => Array ( [0] => content [1] => right ) ) 



пока только так получается :


Array ( [index.html] => Array ( [0] => right [1] => right ) ) 



Делал так:


$g[$arrData['tamplate']] = array(0 => $arrData['placeholder']);
array_push($g[$arrData['tamplate']],$arrData['placeholder']);

   
 
 автор: bronenos   (11.09.2007 в 16:24)   письмо автору
 
   для: sidPR   (11.09.2007 в 14:46)
 

$g[$arrData['tamplate']][] = $arrData['placeholder'];

   
 
 автор: sidPR   (11.09.2007 в 18:53)   письмо автору
 
   для: bronenos   (11.09.2007 в 16:24)
 

из такого
Array ( [tamplate] => index.html [content] => test [placeholder] => content ) 
Array ( [tamplate] => index.html [content] => test [placeholder] => right ) 
Array ( [index.html] => Array ( [0] => content [1] => right ) ) 


получил такое :

Array ( 
[index.html] => Array ( [0] => content [1] => right [2] => content [3] => button [4] => content ) 
[ix.html] => Array ( [0] => content [1] => right [2] => content [3] => button [4] => content ) 
[teix.html] => Array ( [0] => content [1] => right [2] => content [3] => button [4] => content ) ) 


что не есть правильно :(

   
 
 автор: bronenos   (11.09.2007 в 19:24)   письмо автору
 
   для: sidPR   (11.09.2007 в 18:53)
 

напишите весь код в цикле и цикл

   
 
 автор: sidPR   (11.09.2007 в 19:40)   письмо автору
 
   для: bronenos   (11.09.2007 в 19:24)
 


$file = new RowSet("SELECT pages.tamplate,
 placement.content,
 placement.placeholder  
FROM `pages` LEFT JOIN placement ON 
placement.domain_id = pages.domain_id 
WHERE pages.domain_id = '$domen_id' AND
 placement.site_id = pages.site_id");


while ($arrData = $file->fetchAssoc()) {
    $g[$arrData['tamplate']][] = $arrData['placeholder']; 
}

   
 
 автор: bronenos   (11.09.2007 в 20:13)   письмо автору
 
   для: sidPR   (11.09.2007 в 19:40)
 

КАК Я понял вашу мысль - так все как надо

   
 
 автор: kasmanaft   (11.09.2007 в 20:29)   письмо автору
 
   для: sidPR   (11.09.2007 в 14:46)
 

$g[$arrData['tamplate']] = array(0 => $arrData['placeholder']);
array_push($g[$arrData['tamplate']],$arrData['placeholder']);

И там, и там $arrData['placeholder']... Может быть один надо поменять на $arrData['content'] ?

   
 
 автор: bronenos   (11.09.2007 в 20:33)   письмо автору
 
   для: kasmanaft   (11.09.2007 в 20:29)
 

судя по тому, что он хочет получить - контент тут ни при чем

   
 
 автор: sidPR   (12.09.2007 в 00:41)   письмо автору
 
   для: bronenos   (11.09.2007 в 20:33)
 

есть какие соображения у кого ? =) я уже 2 день мозг выношу уже запутался окончательно? может все настолько просто что я кручусь вокруг да около :)

   
 
 автор: kasmanaft   (12.09.2007 в 06:18)   письмо автору
 
   для: sidPR   (12.09.2007 в 00:41)
 

Еще пример, плз...
Не поняяятно. (с)

   
 
 автор: Trianon   (12.09.2007 в 09:30)   письмо автору
 
   для: sidPR   (12.09.2007 в 00:41)
 

если бы Вы еще написали, что делать с $arrData['content'] ...

   
 
 автор: bronenos   (12.09.2007 в 16:57)   письмо автору
 
   для: Trianon   (12.09.2007 в 09:30)
 

предположим, что ничего

   
 
 автор: Trianon   (12.09.2007 в 17:05)   письмо автору
 
   для: bronenos   (12.09.2007 в 16:57)
 


for($n = 0, $res = array(); $row = $file->fetchAssoc() ; ++$n) 

    $key = $row['tamplate'];
    $val =  $row['pclaceholder'];
    $res[$key][$n] = $val;

print_r($res);

если не требуется фиксация номеров строк резалтсета, то $n можно вообще убрать.

   
 
 автор: bronenos   (12.09.2007 в 18:08)   письмо автору
 
   для: Trianon   (12.09.2007 в 17:05)
 

а почему просто не
    $res[$key][] = $val;

   
 
 автор: Trianon   (12.09.2007 в 18:20)   письмо автору
 
   для: bronenos   (12.09.2007 в 18:08)
 

В принципе - да.
Но когда в этом же цикле в конечном итоге окажется не одно выражение присваивания, а несколько, и если некоторые присвоения окажутся под условиями, например, существования (не NULL) полей в строках ответа, то нумерация создаваемых элементов может пойти асинхронно. Я это и указал в примечании под кодом.

   
Rambler's Top100
вверх

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