Перейти к содержимому


очередной простейший вопрос


  • Вы не можете ответить в тему
В теме одно сообщение

#1 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 25 September 2013 - 05:29 PM

наступил тут на непонятные мне грабли. Наверное, они логичны, но я пока логики не понял.
если $a['123_'] = xxx, то xxx заносится в элемент с ключом "123" (строка), а если вместо '123_' поставить '123', то ключ будет числовой. если же '-123', то числовым и офигенным. Со вторым худо-бедно понятно, индекс массива отрицательным быть не может, поэтому получаем положительное офигенное, но как заставить ключ быть строкой при таком раскладе?
Нужда вполне практическая, т.к. код выглядит примерно так
$var = (string)crc32('строка');
$a[$var] = xxx;
а ключ обязательно должен быть строкой, а не int-ом. Вышел из положения добавлением подчерка в конец строки, но это изврат.

Ну и до кучи накопившиеся мелочи, которые просто интересны.

Что означает @ перед функцией? например, @function().
Подавление вывода в стандартный output сообщений об ошибках?

Также кое где (в ShopCMS- в модулях оплаты) встречаю индексы массивов не в квадратных скобках, а в фигурных. В чем отличие?
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#2 eugene_wb

    Продвинутый пользователь

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 25 September 2013 - 08:20 PM

Также кое где (в ShopCMS- в модулях оплаты) встречаю индексы массивов не в квадратных скобках, а в фигурных. В чем отличие?

оператор {} (фигурные скобки), позволяющий обращаться к отдельными символам строки как к элементам массива
+
Для доступа к элементам массива могут использоваться как квадратные, так и фигурные скобки (например, $array[42] и $array{42} означают одно и то же в вышеприведенном примере).


Что означает @ перед функцией? например, @function(). Подавление вывода в стандартный output сообщений об ошибках?

да, игнорирование ошибок


наступил тут на непонятные мне грабли. Наверное, они логичны, но я пока логики не понял. если $a['123_'] = xxx, то xxx заносится в элемент с ключом "123" (строка), а если вместо '123_' поставить '123', то ключ будет числовой. если же '-123', то числовым и офигенным. Со вторым худо-бедно понятно, индекс массива отрицательным быть не может, поэтому получаем положительное офигенное, но как заставить ключ быть строкой при таком раскладе? Нужда вполне практическая, т.к. код выглядит примерно так $var = (string)crc32('строка'); $a[$var] = xxx; а ключ обязательно должен быть строкой, а не int-ом. Вышел из положения добавлением подчерка в конец строки, но это изврат.

попробуй принудительно сделать строку $a["'".$var."'"], возможно сработает
  • 0
Изображение Изображение Изображение