Я в PHP особенно не умею, но мне кажется стоит инструкции выделять точкой с запятой. У меня ваш пример работает. Я сделал так:
<?php
$array = array(
"foo" => "bar",
"bar" => "foo"
);
?>
<script type="text/javascript">
window.ad_products = [{
"id": "<?php echo $array['foo']; ?>",
"number": "<?php echo $array['bar']; ?>"
}];
console.log(ad_products[0].id, ad_products[0].number);
</script>
И все ок, в консоль вывелось "bar foo". Так что либо у вас с синтаксисом PHP проблема, либо вы неправильно обращаетесь к нужным переменным. Мне так кажется.
Достаточно чуть-чуть изменить мой пример чтобы подогнать его под ваш:
<?php
$arResult = array(
"PRODUCT_ID" => 2435135,
"QUANTITY" => 2
);
?>
<script type="text/javascript">
window.ad_products = [{
"id": "<?php echo $arResult['PRODUCT_ID']; ?>",
"number": "<?php echo $arResult['QUANTITY']; ?>"
}];
console.log(ad_products[0].id, ad_products[0].number);
</script>
А с дампом этого не***ческого массива, извините, сами разбирайтесь) Берите php beautifier, ищите где у вас там нужные значения в этой структуре.