В руководстве по РНР PHP: Предопределённые константы - Manual В пояснении к константе PDO::FETCH_ASSOC (int) указан именно (int), хотя она представляет данные в виде массива. Подскажите, почему так?
константы могут быть разные... но именно вот эти - числа и в любом случае тип самой кностанты никак не влияет на то с какими типами данных оперируют при ее использовании
Ну хорошо. Глубокими знаниями в этой области не обладаю. Да и не в каких других, скорее всего. Но вот хотелось бы по подробнее. PHP_VERSION (string), тоже предопределённая константа, всё понятно. А тут так PDO::FETCH_ASSOC (int), хотя выводит массив. Чем обусловлено? Наверняка есть причина. Возможно объяснение весьма простое. Поискал, но ни какой документации по этой теме не нашёл.
константа никакого массива не выводит.... константа она и есть константа и никакого объяснения тут нет разработчики pdo так решили PDO:: значит константа статического класса..... чего вы роете там где не нужно?
Константа именно массив и выводит. Для этого она и существует. Если быть точным, не выводит, а возвращает. А объяснение, что так разработчики решили, ну, это из серии, что букву "л" в слово "солнце", Кирилл и Мефодий добавили чтобы учеников помучить. Сам склоняюсь к мысли, что это как то связано с типизацией данных в БД. Но это тоже, из цикла, сова и глобус.
Шикарнейшее утверждение. Может быть, константа всё-таки передаётся в метод/функцию как аргумент, основываясь на значении которого функция что-то выполняет?
По большому счету передаваемые константы это флаги, в зависимости от значения которых функция возвращает то или иное значение. И гораздо удобнее глазками видеть осмысленный набор PDO::FETCH_ASSOC чем например 2... И описалово где расписаны всё числа... Ещё раз константы возвращают только своё значение, не более.. Сделайте echo PDO::FETCH_ASSOC Там будет число
Может быть лучше как в документации написано? По теме есть какие то мысли? --- Добавлено --- С эхом интересная мысль, сейчас попробую. --- Добавлено --- С эхом интересная мысль, сейчас
Вы путаете аргумент с return. int это аргумент а не то, что возвращает функция. Например это четко видно здесь https://www.php.net/manual/en/pdostatement.fetchall.php , запрос другой, но смысл тот же
Так и написано: Читается так: Класс: PDO, константа: FETCH_ASSOC, тип: целое число. А теперь то, что ТС так смутило: https://www.php.net/manual/ru/pdostatement.fetch.php Тут уже - описание метода fetch класса PDOStatement. @Александр101, параметр $mode - целое число, которым для "удобства" указывается одна из констант из раздела документации, приведённого в #1.
Если в доке написано это не значит, что константа возвращает массив. И с правилами рус. яз. согласуется: если бы хотели написать, что константа возвращает массив , то не поставили бы двоеточия --- Добавлено --- Слово «возвращает» относится к ф-ции (методу). Про константу бы сказали «является», «обозначает» и т.п. Короче хорош тупить
Всё, всё. Всем огромная благодарность что потратили на меня время, особенно ADSoft. Благодаря ему разобрался. Но вот это меня озадачило. PDO::FETCH_ASSOC: возвращает массив это не значит, что константа возвращает массив. И с правилами рус. яз. согласуется: если бы хотели написать, что константа возвращает массив , то не поставили бы двоеточия Как блин это согласуется с русским языком? Мне двоеточие ни как не помогло. Возвращает массив, ну всё значит массив. fetch(PDO::FETCH_ASSOC), а вот так да, возвращается массив. --- Добавлено --- Вот Вы мне всё разжевали. Вот теперь уже всё понятно. Ещё раз, горячая благодарность, вопрос исчерпан.
Кстати, вот это хрень (в оригинале тоже returns): Походу авторы не могли представить, что кто-то подумает, что константа может что-то возвращать. А зря-я-я
Потому что это число как ID ссылающее на номер действия по выводу информации. --- Добавлено --- у меня например PHP: public const FETCH_NUM = 1, FETCH_ASSOC = 2, FETCH_OBJ = 4, MYSQL_FETCH_BIND = 663, FETCH_COLUMN = 265, FETCH_KEY_PAIR = 307, FETCH_NAMED = 173, FETCH_UNIQUE = 333, FETCH_GROUP = 428, FETCH_FUNC = 586, MYSQL_FETCH_FIELD = 343; PHP: /* - Контроль доступа к режиму вывода - Режим возвращаемого результата со всех строк - mode - Идентификатор возвращаемого стиля. Default Lerma :: FETCH_NUM - argument - атрибут для совершения действий над данными */ public function fetchAll( int $mode = null, \Closure | string | null $argument = null ): iterable { $mode ??= config( 'mode' ); $this -> hashVerify(); if ( isset ( Lerma :: MODE[ $mode ]['all'] ) ) { $fetch = $this -> {Lerma :: MODE[ $mode ]['all']}( $mode, $argument ); if ( $fetch instanceOf \Generator ) { return iterator_to_array ( $fetch ); } return $fetch; } throw new LermaStatementException( 'Selected mode for the result was not found' ); }
Благодарю, за ещё более подробное разъяснение. Но в целом, тут уже напихали будь здоров. А объяснять мне, на примере объекта, дело гиблое. Базовых знаний, как оказалось нет, плюс ещё JS, с тем же уровнем освоения в эту кучу.