Уже не в 1-й раз в своей практике программирования в стиле PHP + JavaScript сталкиваюсь с проблемой, что когда посредством AJAX PHP возвращает массив в формате JSON, узнать его длину в JavaScript невозможно. Речь идет об неассоциативном массиве. Например:
<?php $array = array( 1, 2, 3 ); // неассоциативный массив ?>
Данный массив без заданных ключей (индексов). Доступ к элементу получается через порядковый номер $array[ 0 ]
.
Интересный факт заключается в том, что если пересортировать массив, а точнее собрать на основе 1-го – 2-й и сделать замену, то функция JavaScript "length
" работать не будет. Выглядит это примерно так:
<?php $array_1 = array( 1, 2 ); $array_2 = array(); $array_2[ 1 ] = $array_1[ 0 ]; $array_2[ 0 ] = $array_1[ 1 ]; $array_1 = $array_2; ?>
После возвращения массива $array_1
функция JavaScript "length
" вернет "undefined
".
Для избежания проблемы, сначала массив нужно пересортировать, а затем составить новый:
<?php asort( $array_1 ); foreach ( $array_1 as $value ) { $array_2[] = $value; } $array_1 = $array_2;
Итог
Все сводится к тому, что элементы в массиве должны идти от 0 элемента без разрыва и числовые ключи не должны задаваться явно.
Запись опубликована Воскресенье, Август 26, 2012 в 08:31 и находится в JavaScript, Программирование . Вы можете следить за ответами к этой записи через RSS 2.0 ленту. Вы можете оставить комментарий, или обратиться к записи со своего сайта.