Поиск пустых значений в несуществующем массиве:
*NL arrpos('probe659', 0) *NL arrpos('$probe659', '')
вернёт позицию 0, т. е. первую позицию массива, хотя, по-хорошему, хотелось бы получать -1, то есть "не найдено".
Неактивен
Но нулями он заполняется при присваивании. А как же удаление отдельных элементов через KILLVAR? Но KILLVAR тоже не оставляет пробелов! Как только из массива 1, 2, 3 мы удаляем 2, то получаем массив 1, 3 - два элемента на позициях 0 и 1 соответственно. "Хвост" массива сдвигается влево на 1, сохраняя массив неразрывным.
Вот этот нюанс на самом деле напрягает. Грубо говоря, задавая конкретное значение элементу массива, я рассчитываю что оно таким и останется.
Например, я пишу:
probe[4]=10
а потом, поигравшись с killvar пытаюсь поработать с этим элементом, но там неожиданно оказывается другое значение. Пока у меня таких глюков не было, и теперь, зная как это работает, наверное не допущу такой ошибки, но мог бы.
PS Кстати, а если используется строковая индексация? Происходит смещение по индексам, или индекс сохраняется за элементом массива вне зависимости от того, где он находится?
Отредактировано WladySpb (08.09.2011 12:30)
Неактивен
Ну, я обычно очищаю весь массив целиком, пока необходимости не было делать это поэлементно. Просто представил себе ситуацию.
Неактивен