ugrás a tartalomhoz

JS töbdimenziós tömb

gtoma · 2008. Okt. 7. (K), 18.09
Sziasztok!

Segítséget szeretnék kérni.

Beletört a bicskám a js töbdimenziós tömb létrehozásába.

phpből szeretném generálni a var-t:
Jelenlegi kód:
  1. $Datas = DatasFromSQL('files''*'$where." order by files_name"'');  
  2. if(is_array($Datas)) {  
  3.     $Resp = '  
  4.     var tinyMCEImageList = new Array(';  
  5.           
  6.     while(list($DB$Data) = each($Datas))  
  7.         {  
  8.         $Resp .= '  
  9.         ["'.$Data['files_group'].'", ["", ["'.$Data['files_name'].'_100""'.$WEBPAGE.'/files/'.$Data['files_sename'].'_100.'.$Data['files_type'].'""'.$Data['files_alt'].'"] ] ],  
  10.         ["'.$Data['files_name'].'_250""'.$WEBPAGE.'/files/'.$Data['files_sename'].'_250.'.$Data['files_type'].'""'.$Data['files_alt'].'"],  
  11.         ["'.$Data['files_name'].'_500""'.$WEBPAGE.'/files/'.$Data['files_sename'].'_500.'.$Data['files_type'].'""'.$Data['files_alt'].'"],  
  12.         ["'.$Data['files_name'].'_800""'.$WEBPAGE.'/files/'.$Data['files_sename'].'_800.'.$Data['files_type'].'""'.$Data['files_alt'].'"],  
  13.         ["'.$Data['files_name'].'_1024""'.$WEBPAGE.'/files/'.$Data['files_sename'].'_1024.'.$Data['files_type'].'""'.$Data['files_alt'].'"],';  
  14.         }         
  15.     $hossz = strlen($Resp)-1;  
  16.     $Resp = substr($Resp, 0, $hossz);  
  17.     $Resp .= '  
  18.     );';  
  19. }  
Ez valami ilyesmit generál (php-űl :)):
tinyMCEImageList[0][0] = fájl név
tinyMCEImageList[0][1] = url;
tinyMCEImageList[0][2] = title;

De amit szeretnék:

tinyMCEImageList['asszociativ'][0][0] = fájl név
tinyMCEImageList['asszociativ'][0][1] = url;
tinyMCEImageList['asszociativ'][0][2] = title;

Az asszociatívon belül pedig "automatikusan" nőjjön a "számozás" - a példában az amelyik mindhárom esetben 0-a.

Ez lenne a következő:
tinyMCEImageList['asszociativ'][1][0] = fájl név
tinyMCEImageList['asszociativ'][1][1] = url;
tinyMCEImageList['asszociativ'][1][2] = title;


Előre is köszönöm a segítséget.
 
1

JavaScript + tömb

Poetro · 2008. Okt. 7. (K), 19.41
JavaScript nem támogatja az asszociativ tömböket, helyette objektumot használ. Ha neked olyan kimenet kell, miért nem olyat generálsz a PHPvel? (ott is tudod automatikusan növelni az értéket).
Ami szerintem neked kell:
  1. $counter = 0;  
  2. $output = "var tinyMCEImageList = {};\n";  
  3. $groups = array()  
  4. foreach ($Datas as $data) {  
  5.   if (!in_array($Data['files_group'], $groups)) {  
  6.     $groups[] = $Data['files_group'];  
  7.     $output .= "tinyMCEImageList.{$Data['files_group']} = new Array();\n";  
  8.   }  
  9.   foreach (array(100, 250, 500, 800, 1024) as $size) {  
  10.     $output .= "  
  11.       tinyMCEImageList.{$Data['files_group']}[$counter] = new Array(  
  12.         '{$Data['files_name']}_$size',  
  13.         '$WEBPAGE/files/{$Data['files_sename']}_$size.{$Data['files_type']}',  
  14.         '{$Data['files_alt']}'  
  15.       );";  
  16.   }  
  17.   $counter++;  
  18. }  
  19. print $output;  
2

json

szabo.b.gabor · 2008. Okt. 7. (K), 20.18
json sztem a barátod..

php oldalon létrehozhatsz bármit, aztán azt mondod neki, hogy json_encode()

js oldalon meg azt, hogy json_decode() viccesen kicsi a js, ami megcsinálja és működik.
4

Köszönöm!

gtoma · 2008. Okt. 9. (Cs), 08.38
Tibor: El fogom olvasni! Köszönöm!

Gábor: ;) nem akartam ezért hozzárakni semmi pluszt, de köszönöm!

Poetro: Köszönöm. Végül lemondtam az "asszociatívságról". És sikerült a kódodat "átültetnem".

A megoldásod el is magyarázta, hogy van ez. Köszi! És mindenkinek másnak is!