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:

	$Datas = DatasFromSQL('files', '*', $where." order by files_name", '');
	if(is_array($Datas)) {
		$Resp = '
		var tinyMCEImageList = new Array(';
			
		while(list($DB, $Data) = each($Datas))
			{
			$Resp .= '
			["'.$Data['files_group'].'", ["", ["'.$Data['files_name'].'_100", "'.$WEBPAGE.'/files/'.$Data['files_sename'].'_100.'.$Data['files_type'].'", "'.$Data['files_alt'].'"] ] ],
			["'.$Data['files_name'].'_250", "'.$WEBPAGE.'/files/'.$Data['files_sename'].'_250.'.$Data['files_type'].'", "'.$Data['files_alt'].'"],
			["'.$Data['files_name'].'_500", "'.$WEBPAGE.'/files/'.$Data['files_sename'].'_500.'.$Data['files_type'].'", "'.$Data['files_alt'].'"],
			["'.$Data['files_name'].'_800", "'.$WEBPAGE.'/files/'.$Data['files_sename'].'_800.'.$Data['files_type'].'", "'.$Data['files_alt'].'"],
			["'.$Data['files_name'].'_1024", "'.$WEBPAGE.'/files/'.$Data['files_sename'].'_1024.'.$Data['files_type'].'", "'.$Data['files_alt'].'"],';
			}		
		$hossz = strlen($Resp)-1;
		$Resp = substr($Resp, 0, $hossz);
		$Resp .= '
		);';
	}
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:
$counter = 0;
$output = "var tinyMCEImageList = {};\n";
$groups = array()
foreach ($Datas as $data) {
  if (!in_array($Data['files_group'], $groups)) {
    $groups[] = $Data['files_group'];
    $output .= "tinyMCEImageList.{$Data['files_group']} = new Array();\n";
  }
  foreach (array(100, 250, 500, 800, 1024) as $size) {
    $output .= "
      tinyMCEImageList.{$Data['files_group']}[$counter] = new Array(
        '{$Data['files_name']}_$size',
        '$WEBPAGE/files/{$Data['files_sename']}_$size.{$Data['files_type']}',
        '{$Data['files_alt']}'
      );";
  }
  $counter++;
}
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!