Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вопрос связаный с JSON и массивами (https://javascript.ru/forum/misc/26283-vopros-svyazanyjj-s-json-i-massivami.html)

Svist 03.03.2012 09:05

Вопрос связаный с JSON и массивами
 
Всем привет!
У меня таккой вопрос, собственно покажу на примере :
$Z = new Array();
$Z['x']= new Array();
$Z['y']= new Array();
$Z['x']['q']="qqqqq";
$Z['y']['w']="wwwww";
alert( JSON.stringify($Z));


и получаю вот это "[]" Собсвенно почему ?? И как мне перевести подобный массив в строку для последующей передаче на сервер .. и там его распаковки средствами пхп?? Проблема должна решаться как то легко но как не пойму.
За ранее спасибо!

Kolyaj 03.03.2012 09:36

Не надо на JavaScript писать также, как на PHP, это разные языки.

var Z = {
    x: {
        q: 'qqqq'
    },
    y: {
        w: 'wwww'
    }
};
alert(JSON.stringify(Z));

Svist 03.03.2012 12:22

Kolyaj Спасибо за совет... понял.
А если я этот массив формирую в цикле как же тогда быть ?
вот прям кусок кода, разбератся в нем не надо Просто может посоветуете как мне быть и передать массив $Z если я его наполняю подобным образом ..:
for (i = 1; i <= $PAGE[$ThisPage]['pid']; i++) {
			if((trim(giev('part'+i))=='')&&(Alr==1)){
				Alr=2;
				$Z['error']['txt']=$Z['error']['txt']+" - Есть не заполненные поля<br />";
			}
			if (document.getElementById('p1pr'+i)){
				n++;
				$Z['price'][n]= new Array(); // текущая строка в прайсе заказа
				if (trim(giev('p1pr'+i))==''){siev('p1pr'+i,'0');}
				if (trim(giev('pkolv'+i))==''){siev('pkolv'+i,'1')}
				sum=sum+(parseFloat(strrx(",",".",giev('pkolv'+i)))*parseFloat(strrx(",",".",giev('p1pr'+i))));
				$Z['price'][n]['part']=trim(giev('part'+i,'en'));
				$Z['price'][n]['pnam']=trim(giev('pnam'+i,'en'));
				$Z['price'][n]['panalog']=trim(giev('panalog'+i,'en'));
				$Z['price'][n]['pkolv']=strrx(",",".",trim(giev('pkolv'+i,'en')));
				$Z['price'][n]['p1pr']=strrx(",",".",trim(giev('p1pr'+i,'en')));
				$Z['price'][n]['p2pr']=trim(giev('p2pr'+i,'en'));
				$Z['price'][n]['pavto']=trim(giev('pavto'+i,'en'));
				$Z['price'][n]['pdscr']=trim(giev('pdscr'+i,'en'));
			}
			$Z['price'][0]= new Array(); 
			$Z['price'][0]['count']=n;
			$Z['price'][0]['summ']=sum;
			
			sie('prcalc',sum+' руб.');
		}

Pavel M. 03.03.2012 15:32

вы, похоже, путаете
массивы http://learn.javascript.ru/array
и объекты http://learn.javascript.ru/objects

Svist 03.03.2012 16:18

Вообщем перевел Индексы с текстовых на числовые и все нормально полочилось всем спасибо тема закрыта !


Часовой пояс GMT +3, время: 03:47.