Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Создание многомерного массива из PHP (https://javascript.ru/forum/misc/29039-sozdanie-mnogomernogo-massiva-iz-php.html)

ivandelov 12.06.2012 15:22

Создание многомерного массива из PHP
 
День добрый.
Мало работал Javascript, помогите с генерацией массива.

Задача: сгенерировать многомерный массив из аналогичного массива в PHP.

В PHP сделал так:

$arResult["AR_ZAPIS_LEVEL"] = array();
foreach($arResult["AR_ZAPIS"] as $item)
{
	$ardate = explode(".", $item["PROPERTY_DATE_VALUE"]);
	//dump($ardate);
	$arResult["AR_ZAPIS_LEVEL"][$ardate[2]][$ardate[1]][$ardate[0]][$item["PROPERTY_TIME_ENUM_ID"]] = $item;
	
}


Для Javascript не сообразил ничего лучше, чем сделать так:

//формируем такой же массив для скрипта
	ar_allzap_level = new Array();
	//ar_allzap_level = new Object();
	<?
	foreach($arResult["AR_ZAPIS"] as $item)
	{
		$ardate = explode(".", $item["PROPERTY_DATE_VALUE"]);
		//dump($ardate);
		//формируем такой же массив для скрипта
		?>
		if( ar_allzap_level[<?=$ardate[2]?>] == undefined )
		{
			ar_allzap_level[<?=$ardate[2]?>] = new Array();
		}
		if( ar_allzap_level[<?=$ardate[2]?>][<?=$ardate[1]?>] == undefined )
		{
			ar_allzap_level[<?=$ardate[2]?>][<?=$ardate[1]?>] = new Array();
		}
		if( ar_allzap_level[<?=$ardate[2]?>][<?=$ardate[1]?>][<?=$ardate[0]?>] == undefined )
		{
			ar_allzap_level[<?=$ardate[2]?>][<?=$ardate[1]?>][<?=$ardate[0]?>] = new Array();
		}
		ar_allzap_level[<?=$ardate[2]?>][<?=$ardate[1]?>][<?=$ardate[0]?>].push(<?=$item["PROPERTY_TIME_ENUM_ID"]?>);
		<?
	}
	?>



Наверняка есть вменяемый способ в пару строк, а не мой кошмар :)

9xakep 12.06.2012 17:14

Тебе нужно передать массив из php в js?
Или сделать копию массива в js?

ivandelov 12.06.2012 20:03

Передать из php в js

9xakep 12.06.2012 20:25

ivandelov,
<?php
$arr = array(
'a' => 1, 
'b' => 2, 
'c' => 3, 
'd' => 4, 
'e' => 5
);
echo "<script> var a = eval(".json_encode($arr).") </script> ";
?>
<script>
console.log(a)
</script>


На выходе получаете объект js, с которым обращаетесь также, как и в php:
alert(a['a']) //1
alert(a['b']) // 2

P.S. сам как-то мучался с этим же)

zebra 12.06.2012 21:39

eval то зачем?

9xakep 12.06.2012 21:45

Так без него, json_encode($arr) обычная строка...
Хм...а хотя нет, все ок. Можно eval не юзать.

ivandelov 13.06.2012 21:01

Спасибо!


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