У меня проблема, если этот необязательный массив пуст:
<script>
var parsedArray = JSON.parse('<?php echo json_encode($myArray); ?>');
console.info(parsedArray );
</script>
Все в порядке, если массив НЕ пуст, но проблема возникает, если в массиве нет значений;
Uncaught SyntaxError: Unexpected token A in JSON at position 0
Console.log просто выводит Array, если массив пуст.
Я хочу узнать, как это делается правильно. Как передать пустой массив в jQuery, чтобы я мог запустить на нем функцию myArray.length, например, и чтобы он возвращал 0, если он пуст.
Обычно, если $myArray является пустым array(), json_encode должен возвращать [], поэтому я не уверен, откуда взялась синтаксическая ошибка. Как выглядит ответ от json_encode($myArray);, если он пустой, или, скорее, как выглядит $myArray?
Просто выдает строку Array



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете использовать тенарные операторы при выводе вашего $myArray. Если он пуст, вы можете просто передать null в JSON.parse, то есть:
var parsedArray = JSON.parse('<?php echo !empty($myArray) ? json_encode($myArray) : "null"; ?>');
console.info(parsedArray);
С ответом выше я бы также добавил ' в PHP:
var parsedArray = JSON.parse(<?php echo !empty($myArray) ? "'" . json_encode($myArray) . "'" : "null"; ?>);
console.info(parsedArray);
Потому что мы бы не использовали null как 'null'.
Вы можете проверить $myArray при его выводе и сделать что-нибудь, если он пуст. Что делать, зависит от того, как вы будете использовать послесловие parsedArray. Вы можете передать пустой массив []:
var parsedArray = JSON.parse('<?php echo !empty($myArray)? json_encode($myArray) : "[]"; ?>');
console.info(parsedArray);
Я думаю, что нет необходимости делать оператор if, я понял это, и моя проблема заключалась в том, что я сделал json_encode ($ myArray) в PHP-коде, а затем JSON.parse в javascript
так работает без проблем:
в PHP просто объявите массив
$myArray = [];
а в php файле под скриптом выплюнуть вот так:
var myArray = <?= json_encode($myArray) ?>;
И теперь, даже если массив пуст, он будет выплевывать [];
Как выглядит вход сгенерированный?