PHP | Вопросы собесов
رفتن به کانال در Telegram
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv
نمایش بیشتر2 341
مشترکین
-124 ساعت
-47 روز
-2430 روز
آرشیو پست ها
Как реализована структура в python в сравнении с другими языками ?
Спросят с вероятностью 13%
Структура данных, аналогичная структурам (struct), называется классом. Хотя он не имеет встроенного типа данных, эквивалентного структурам в этих языках, классы предоставляют гибкость и функциональность, необходимые для создания сложных данных.
Реализация структуры
Класс используется для определения структуры данных, которая может содержать как данные, так и методы для работы с этими данными.
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
point = Point(10, 20)
print(f"Point x: {point.x}, y: {point.y}")
В этом примере класс Point определяет структуру данных с двумя атрибутами x и y.
Сравнение с другими языками
C
Структуры (struct) являются простыми контейнерами для хранения связанных данных. В отличие от классов в Python, структуры в C не могут содержать методов (функций).
struct Point {
int x;
int y;
};
struct Point p;
p.x = 10;
p.y = 20;
printf("Point x: %d, y: %d\n", p.x, p.y);
C++
Структуры очень похожи на классы, но по умолчанию их члены имеют публичную область видимости, в то время как члены класса имеют приватную область видимости. В C++ структуры могут содержать методы, что делает их более гибкими по сравнению с C.
struct Point {
int x;
int y;
void print() {
std::cout << "Point x: " << x << ", y: " << y << std::endl;
}
};
Point p;
p.x = 10;
p.y = 20;
p.print();
Java
Не имеет структур, как в C или C++. Вместо этого используются классы, которые предоставляют функциональность для определения как данных, так и методов.
public class Point {
private int x;
private int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public void print() {
System.out.println("Point x: " + x + ", y: " + y);
}
}
Point p = new Point(10, 20);
p.print();
Go
Структуры (struct) используются для группировки данных, но они не могут содержать методов внутри самой структуры. Методы могут быть определены отдельно и связаны со структурами.
package main
import "fmt"
type Point struct {
x int
y int
}
func (p Point) print() {
fmt.Printf("Point x: %d, y: %d\n", p.x, p.y)
}
func main() {
p := Point{10, 20}
p.print()
}
Преимущества
1️⃣Инкапсуляция: Классы позволяют объединить данные и методы, что упрощает управление и использование данных.
2️⃣Наследование: Классы поддерживают наследование, что позволяет создавать новые классы на основе существующих, обеспечивая переиспользование кода.
3️⃣Гибкость: Классы могут содержать как данные, так и методы для работы с этими данными, что позволяет реализовать более сложные структуры и логику.
Для создания структур данных используются классы, которые предоставляют возможности инкапсуляции, наследования и гибкости, аналогичные тем, что доступны в других объектно-ориентированных языках программирования. Могут содержать методы и предоставляют более мощные средства для работы с данными.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к списку 385 вопросов на PHP разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых🤔 Какой из ниже перечисленных методов возвращает массив с ключами массива в PHP?
Чем отличается get от post'а ?
Спросят с вероятностью 13%
Методы HTTP GET и POST являются двумя основными способами передачи данных между клиентом (обычно веб-браузером) и сервером. Вот основные различия между ними:
GET
1️⃣Назначение:
✅Используется для получения данных от сервера.
✅Запросы GET должны быть безопасными и идемпотентными, то есть не изменять состояние сервера.
2️⃣Передача данных:
✅Параметры передаются в URL-адресе после знака вопроса (?).
✅Ограничение на длину URL (обычно до 2048 символов, но это зависит от браузера и сервера).
3️⃣Кэширование:
✅Запросы GET могут кэшироваться браузерами и промежуточными серверами.
✅URL с параметрами может быть закеширован.
4️⃣Видимость:
✅Параметры видны в адресной строке браузера.
✅Менее безопасен для передачи конфиденциальных данных.
<form action="/search" method="get">
<input type="text" name="query">
<input type="submit" value="Search">
</form>
✅Генерируемый URL: http://example.com/search?query=keyword
POST
1️⃣Назначение:
✅Используется для отправки данных на сервер, что может привести к изменению состояния сервера (например, создание записи в базе данных).
✅Запросы POST не должны быть идемпотентными.
2️⃣Передача данных:
✅Параметры передаются в теле HTTP-запроса, а не в URL.
✅Нет явного ограничения на объем данных, но сервер может ограничивать размер принимаемых данных.
3️⃣Кэширование:
✅Запросы POST обычно не кэшируются.
✅Кэширование POST-запросов не рекомендуется из-за потенциальных изменений состояния сервера.
4️⃣Видимость:
✅Параметры не видны в адресной строке.
✅Более безопасен для передачи конфиденциальных данных, таких как пароли и личная информация.
<form action="/submit" method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="Submit">
</form>
✅Данные отправляются в теле запроса.
GET — это метод для получения данных, параметры видны в адресной строке. POST — это метод для отправки данных, параметры передаются в теле запроса и скрыты от пользователя.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к списку 385 вопросов на PHP разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых🔥 Один в поле не воин, поэтому топовый программист должен находится в топ команде.
🧑💻 Марк Цукерберг создал первоначальную версию Facebook в одиночку, но для превращения стартапа в глобальную социальную сеть потребовалась мощная команда.
👌 IT мероприятия - одно из тех мест, где можно найти единомышленников в данной нише.
🔥 Подпишись на канал IT события, чтобы не упустить возможность в реализации своего потенциала.
🤔 Какой метод используется для отправки POST-запроса в PHP?
Какие магические методы у класса есть ?
Спросят с вероятностью 13%
Магические методы — это специальные методы, которые начинаются и заканчиваются двойным подчеркиванием (
__). Эти методы позволяют разработчикам реализовать поведение объектов, которое изменяет или дополняет стандартные операции, такие как создание объектов, арифметические операции, доступ к атрибутам и многое другое. Вот список основных магических методов в Python, сгруппированных по категориям:
Инициализация и уничтожение
✅`__init__(self, ...)`: Инициализация нового объекта. Вызывается после создания экземпляра класса.
✅`__del__(self)`: Деструктор, вызывается при уничтожении объекта.
Представление
✅`__str__(self)`: Возвращает строковое представление объекта, используемое при вызове str(obj) или print(obj).
✅`__repr__(self)`: Возвращает строковое представление объекта для разработчиков, используемое при вызове repr(obj).
Арифметические операции
✅`__add__(self, other)`: Операция сложения (+).
✅`__sub__(self, other)`: Операция вычитания (-).
✅`__mul__(self, other)`: Операция умножения (*).
✅`__truediv__(self, other)`: Операция деления (/).
✅`__floordiv__(self, other)`: Операция целочисленного деления (//).
✅`__mod__(self, other)`: Операция остатка от деления (%).
✅`__pow__(self, other)`: Операция возведения в степень (**).
Операции сравнения
✅__eq__(self, other): Операция равенства (`==`).
✅__ne__(self, other): Операция неравенства (`!=`).
✅__lt__(self, other): Операция меньше (`<`).
✅__le__(self, other): Операция меньше или равно (`<=`).
✅__gt__(self, other): Операция больше (`>`).
✅__ge__(self, other): Операция больше или равно (`>=`).
Контейнерные методы
✅`__len__(self)`: Возвращает количество элементов при вызове `len(obj)`.
✅`__getitem__(self, key)`: Позволяет доступ к элементам по индексу obj[key].
✅`__setitem__(self, key, value)`: Позволяет устанавливать значение элемента по индексу obj[key] = value.
✅`__delitem__(self, key)`: Позволяет удалять элемент по индексу del obj[key].
✅`__iter__(self)`: Возвращает итератор объекта, который используется в циклах for.
✅`__next__(self)`: Возвращает следующий элемент итератора.
Управление контекстом
✅__enter__(self): Вызывается при входе в контекст with.
✅__exit__(self, exc_type, exc_value, traceback): Вызывается при выходе из контекста with.
Другие методы
✅__call__(self, ...): Позволяет вызывать экземпляры класса как функции.
✅__contains__(self, item): Определяет поведение оператора in.
✅__bool__(self): Возвращает значение логического типа для объекта, используется в логических выражениях.
Магические методы предоставляют мощные возможности для изменения и расширения стандартного поведения объектов. Они обеспечивают гибкость и удобство работы с объектами, что делает более выразительным и функциональным языком.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к списку 385 вопросов на PHP разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых🤔 Какая функция используется для разбиения строки на массив по разделителю в PHP?
Что такое уровни изоляции транзакций ?
Спросят с вероятностью 13%
Уровни изоляции транзакций — это концепция в управлении базами данных, которая определяет, как одна транзакция видит изменения, сделанные другими транзакциями. Они помогают предотвратить различные виды конфликтов и обеспечивают целостность данных. Существует четыре основных уровня изоляции транзакций, определенных стандартом SQL. Рассмотрим их подробнее.
Основные проблемы
Прежде чем углубиться в уровни изоляции, важно понимать три проблемы, которые они помогают решить:
1️⃣Грязное чтение (Dirty Read): Одна транзакция видит незавершенные изменения другой транзакции.
2️⃣Неповторяющееся чтение (Non-repeatable Read): Одна транзакция читает те же строки несколько раз и видит разные данные из-за изменений, сделанных другой транзакцией.
3️⃣Фантомное чтение (Phantom Read): Одна транзакция видит новые строки, добавленные другой транзакцией, при повторном выполнении запроса.
Уровни изоляции
1️⃣Read Uncommitted (Чтение незафиксированных данных)
Транзакция может читать данные, измененные другими транзакциями, даже если эти изменения еще не зафиксированы.
Проблемы: Возможны грязные чтения, неповторяющиеся чтения и фантомные чтения.
✅Транзакция A изменяет строку, но не фиксирует изменения. Транзакция B читает эту измененную строку. Если транзакция A откатится, данные, которые видела транзакция B, окажутся неверными.
2️⃣Read Committed (Чтение зафиксированных данных)
Транзакция может читать только те данные, которые были зафиксированы другими транзакциями.
Проблемы: Исключает грязные чтения, но возможны неповторяющиеся чтения и фантомные чтения.
✅Транзакция A изменяет строку и фиксирует изменения. Транзакция B читает измененную строку. Если транзакция A снова изменяет ту же строку и фиксирует изменения, транзакция B увидит разные данные при повторном чтении.
3️⃣Repeatable Read (Повторяемое чтение)
Гарантирует, что если транзакция прочитала строку, то другие транзакции не смогут изменить или удалить эту строку до завершения первой транзакции.
Проблемы: Исключает грязные чтения и неповторяющиеся чтения, но возможны фантомные чтения.
✅Транзакция A читает набор строк. Если транзакция B изменяет одну из этих строк и фиксирует изменения, транзакция A не увидит эти изменения до завершения.
4️⃣Serializable (Сериализуемость)
Обеспечивает полную изоляцию транзакций, делая их выполнение последовательным, как если бы они выполнялись одна за другой.
Проблемы: Исключает грязные чтения, неповторяющиеся чтения и фантомные чтения.
✅Транзакция A выполняет запрос, который включает диапазон строк. Транзакция B не может вставить, изменить или удалить строки, попадающие в этот диапазон, до завершения транзакции A.
Таблица сравнения
| Уровень изоляции | Грязное чтение | Неповторяющееся чтение | Фантомное чтение |
|----------------------|----------------|------------------------|------------------|
| Read Uncommitted | Да | Да | Да |
| Read Committed | Нет | Да | Да |
| Repeatable Read | Нет | Нет | Да |
| Serializable | Нет | Нет | Нет |
Уровни изоляции нужны, чтобы управлять конкурентным доступом к данным и обеспечить их целостность в многопользовательских системах.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к списку 385 вопросов на PHP разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых
🔥 Один в поле не воин, поэтому топовый программист должен находится в топ команде.
🧑💻 Марк Цукерберг создал первоначальную версию Facebook в одиночку, но для превращения стартапа в глобальную социальную сеть потребовалась мощная команда.
👌 IT мероприятия - одно из тех мест, где можно найти единомышленников в данной нише.
🔥 Подпишись на канал IT события, чтобы не упустить возможность в реализации своего потенциала.
🤔 Какой из следующих методов используется для добавления элемента в начало массива в PHP?
Что такое микросервисная архитектура ?
Спросят с вероятностью 13%
Микросервисная архитектура — это подход к разработке ПО, при котором приложение делится на множество мелких, независимых сервисов, каждый из которых выполняет определенную бизнес-функцию. Эти сервисы взаимодействуют друг с другом через хорошо определенные интерфейсы, часто с использованием сетевых протоколов, таких как HTTP/REST или gRPC.
Основные характеристики:
1️⃣Декомпозиция приложения:
✅Приложение разбивается на множество маленьких сервисов, каждый из которых отвечает за выполнение определенной задачи или функции. Это позволяет легче управлять сложностью системы и улучшает модульность.
2️⃣Независимость и автономность сервисов:
✅Каждый микросервис разрабатывается, развертывается и масштабируется независимо от других. Это позволяет различным командам работать над разными сервисами одновременно, без зависимости друг от друга.
3️⃣Гибкость в выборе технологий:
✅Разработчики могут выбирать наиболее подходящие технологии и языки программирования для каждого сервиса, что позволяет использовать лучшие инструменты для конкретных задач.
4️⃣Коммуникация через API:
✅Микросервисы взаимодействуют друг с другом через хорошо определенные интерфейсы, часто с использованием HTTP/REST, gRPC или системы обмена сообщениями, такие как RabbitMQ или Kafka.
5️⃣Масштабируемость и устойчивость к сбоям:
✅Микросервисы могут быть масштабированы независимо, что позволяет эффективно управлять ресурсами. Кроме того, сбой одного сервиса не приводит к отказу всего приложения, что улучшает надежность системы.
Преимущества:
1️⃣Масштабируемость:
✅Легко масштабировать отдельные сервисы, которые испытывают высокую нагрузку, без необходимости масштабировать все приложение.
2️⃣Гибкость разработки:
✅Независимые команды могут работать над разными частями приложения одновременно, что ускоряет процесс разработки и развертывания новых функций.
3️⃣Устойчивость к сбоям:
✅Проблемы в одном микросервисе не обязательно приводят к отказу всей системы. Это позволяет разрабатывать более устойчивые приложения.
4️⃣Облегченная поддержка и обновление:
✅Микросервисы можно обновлять и развертывать независимо, что упрощает поддержку и добавление новых функций без прерывания работы всего приложения.
Недостатки:
1️⃣Сложность управления:
✅Большое количество сервисов увеличивает сложность управления, мониторинга и тестирования системы.
2️⃣Сетевая латентность и надежность:
✅Коммуникация между микросервисами через сеть может привести к задержкам и потребовать дополнительных мер для обеспечения надежности.
3️⃣Обеспечение согласованности данных:
✅Управление согласованностью данных между различными сервисами может быть сложным, особенно при распределенных транзакциях.
Примеры:
1️⃣E-commerce платформы: Микросервисы могут использоваться для управления пользователями, заказами, платежами и рекомендациями.
2️⃣Медиа-сервисы: Разделение функций на микросервисы для стриминга, хранения медиафайлов и управления пользователями.
3️⃣Финансовые приложения: Разделение на микросервисы для обработки транзакций, управления счетами и аналитики.
Микросервисная архитектура разделяет приложение на множество мелких, независимых сервисов, что улучшает масштабируемость, гибкость разработки и устойчивость к сбоям. Однако она также добавляет сложность в управление и обеспечение согласованности данных. Инструменты контейнеризации, API-шлюзы и брокеры сообщений помогают эффективно управлять микросервисами.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к списку 385 вопросов на PHP разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых
🤔 Какой из следующих методов используется для удаления последнего элемента из массива в PHP?
Чем отличается PHP от C++ ?
Спросят с вероятностью 13%
PHP и C++ — это два различных языка программирования, каждый из которых имеет свои уникальные особенности, предназначения и области применения. Вот основные различия между ними:
Основное назначение
PHP (Hypertext Preprocessor):
✅Назначение: Изначально разработан для создания динамических веб-страниц и веб-приложений. Это серверный язык программирования.
✅Использование: Чаще всего используется для обработки данных, работы с базами данных, управления сессиями и генерации HTML-кода для веб-страниц.
C++:
✅Назначение: Используется для разработки системного программного обеспечения, видеоигр, драйверов, клиентских приложений и других высокопроизводительных приложений.
✅Использование: Широко применяется в системном программировании, разработке встроенных систем и высокопроизводительных приложений.
Типизация
PHP:
✅Динамическая типизация: Переменные в PHP не требуют явного указания типа данных. Тип переменной определяется автоматически во время выполнения программы.
$var = 10; // $var — это целое число
$var = "Hello"; // теперь $var — это строка
C++:
✅Статическая типизация: Тип переменной должен быть определен во время компиляции, и он не может измениться в процессе выполнения программы.
int var = 10; // var — это целое число
var = "Hello"; // Ошибка компиляции: несоответствие типов
Исполнение
PHP:
✅Интерпретируемый язык: Код выполняется на сервере с помощью интерпретатора PHP. Это означает, что код переводится и выполняется построчно.
<?php
echo "Hello, World!";
?>
C++:
Компилируемый язык: Код на нем должен быть скомпилирован в исполняемый файл перед его запуском. Компилятор переводит исходный код в машинный код, который затем может быть выполнен напрямую процессором.
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}
Управление памятью
PHP:
✅Управление памятью: Автоматизирует управление памятью с помощью сборщика мусора, что освобождает разработчика от необходимости явно управлять памятью.
C++:
✅Управление памятью: Разработчик отвечает за управление памятью, включая выделение и освобождение памяти. Это предоставляет больше контроля, но требует более внимательного подхода.
PHP — это язык для создания веб-сайтов, где код выполняется на сервере. C++ — это язык для создания приложений, который требует компиляции и управления памятью.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к списку 385 вопросов на PHP разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых🧑💻 Если твой английский позволяет ответить только на вопрос "Do you speak English", то с этим нужно что-то делать, будучи программистом.
🫤 Ты в курсе, что ...
- говорят по-английски — 20% из всех людей.
- Большое кол-во IT документации написано на английском.
Хочешь понимать код лучше? Изучи язык, который используется в его основе.
📕 На нашем канале ты постепенно будешь набираться опыта, в этом тебе помогут:
- Тесты для изучения английского: проверьте свои знания на практике.
- Английский через мемы: учите язык весело и с интересом.
- Шпаргалки для повторения: закрепите знания быстро и эффективно.
- Английский сленг программиста: станьте настоящим профи в коммуникации.
🔥 Маленький шаг в изучении иностранного откроет перед тобой большие возможности будущего специалиста и значительно повысит твое зп.
🌸 Подпишись, do it!
🤔 Какой из следующих методов используется для получения информации о типе переменной в PHP?
👩💻 Есть опыт в проге, но не растет зп? Может нужно найти крутой оффер?
🗿 Большинство IT специалистов работает за копейки и даже не осознает этого. Лучший способ понять рынок вакансий - стать его частью и начать анализировать.
👍 Предела совершенству нет, что нельзя сказать про зп в рамках одной компании. Подпишись на Мидл работает и повышай свой капитал.
Как в генераторе достигается то, что в текущем файле находится один объект ?
Спросят с вероятностью 13%
Генераторы позволяют создать объект, который итерируется по значению, возвращаемому выражением
yield. Важным аспектом работы генераторов является то, что они сохраняют свое состояние между вызовами, позволяя продолжить выполнение с того места, где они остановились в прошлый раз. В одном файле может находиться несколько генераторов, но когда говорится о "текущем файле", обычно имеется в виду конкретный экземпляр генератора в определенном контексте.
Как достигается сохранение состояния в генераторах
Когда генератор создает объект, этот объект сохраняет контекст выполнения, включая локальные переменные и текущую позицию выполнения. Это достигается благодаря механизму итерации и использования ключевого слова yield. Каждый раз, когда генератор вызывает yield, выполнение функции приостанавливается, а значение возвращается вызывающему коду. При последующем вызове генератор возобновляет выполнение с точки, на которой он был приостановлен.
def simple_generator():
print("Start")
yield 1
print("Continue")
yield 2
print("End")
gen = simple_generator()
print(next(gen)) # Выведет "Start" и "1"
print(next(gen)) # Выведет "Continue" и "2"
print(next(gen)) # Выведет "End" и вызовет StopIteration
В этом примере генератор simple_generator сохраняет свое состояние между вызовами next(), что позволяет ему продолжить выполнение с того места, где он остановился после предыдущего вызова.
Генераторы и единственный объект в текущем файле
Реализованы таким образом, что каждый вызов функции генератора создает новый объект генератора. Это значит, что если в файле создается только один объект генератора и он используется в единственном контексте, то в этом контексте будет только один активный объект генератора.
gen1 = simple_generator()
gen2 = simple_generator()
print(next(gen1)) # Выведет "Start" и "1"
print(next(gen2)) # Выведет "Start" и "1" (новый объект генератора)
В данном примере gen1 и gen2 являются двумя разными объектами генератора, и каждый из них сохраняет свое собственное состояние.
Генераторы создают объекты, которые сохраняют свое состояние между вызовами, что позволяет им продолжать выполнение с точки, где они были приостановлены. Каждый вызов функции генератора создает новый объект, который хранит свое собственное состояние. В контексте одного файла может быть создано несколько объектов генератора, каждый из которых будет независимым.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к списку 385 вопросов на PHP разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых🤔 Какой символ используется для отделения имени класса от имени метода в PHP?
Что такое стрелочные и анонимные функции ?
Спросят с вероятностью 13%
Стрелочные и анонимные функции представляют собой различные способы создания функций без явного задания имени. Они часто используются для краткости кода и передачи функций как аргументов в другие функции. Вот основные различия между ними и примеры использования:
Анонимные функции (Anonymous Functions)
Также известные как замыкания (closures), позволяют создавать функции без имен. Они могут захватывать переменные из окружающего контекста и могут быть присвоены переменным или переданы в качестве аргументов другим функциям.
$greet = function($name) {
return "Hello, $name!";
};
echo $greet("John"); // Вывод: Hello, John!
Анонимные функции могут захватывать переменные из окружающей области видимости с помощью ключевого слова use:
$message = "Hello";
$greet = function($name) use ($message) {
return "$message, $name!";
};
echo $greet("John"); // Вывод: Hello, John!
Стрелочные функции (Arrow Functions)
Они предоставляют более короткий синтаксис для создания анонимных функций. В отличие от обычных анонимных функций, стрелочные функции автоматически захватывают переменные из окружающего контекста, что делает их более удобными для использования в определенных случаях.
$greet = fn($name) => "Hello, $name!";
echo $greet("John"); // Вывод: Hello, John!
Стрелочные функции захватывают переменные из окружающей области видимости автоматически, без использования ключевого слова use:
$message = "Hello";
$greet = fn($name) => "$message, $name!";
echo $greet("John"); // Вывод: Hello, John!
Сравнение анонимных и стрелочных функций
1️⃣Синтаксис:
✅Анонимные функции: Используют ключевое слово function и могут захватывать переменные с помощью use.
✅Стрелочные функции: Используют короткий синтаксис fn и автоматически захватывают переменные из окружающего контекста.
2️⃣Захват переменных:
✅Анонимные функции: Переменные должны явно указываться с помощью use.
✅Стрелочные функции: Переменные захватываются автоматически.
3️⃣Поддержка версий:
✅Анонимные функции: Поддерживаются начиная с PHP 5.3.
✅Стрелочные функции: Поддерживаются начиная с PHP 7.4.
Фильтрация массива с использованием анонимной функции:
$numbers = [1, 2, 3, 4, 5];
$evenNumbers = array_filter($numbers, function($number) {
return $number % 2 === 0;
});
print_r($evenNumbers); // Вывод: Array ( [1] => 2 [3] => 4 )
Фильтрация массива с использованием стрелочной функции:
$numbers = [1, 2, 3, 4, 5];
$evenNumbers = array_filter($numbers, fn($number) => $number % 2 === 0);
print_r($evenNumbers); // Вывод: Array ( [1] => 2 [3] => 4 )
Анонимные функции позволяют создавать функции без имен и могут захватывать переменные из окружающего контекста с помощью use. Стрелочные функции, введенные, предлагают более краткий синтаксис и автоматически захватывают переменные из окружающего контекста.
👉 Можно посмотреть примеры как отвечают люди на этот вопрос, или перейти к списку 385 вопросов на PHP разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых🤬 Постоянные ошибки, как они надоели!
🤯 Планируя свои дела, мы забываем, что оборудование может подвести. Это может перекрыть все рабочие планы. Придется гуглить, смотреть видосы, звонить знакомым "Не встречалась ли тебе такая ошибка?"
🥵 Все это время и силы. Наша команда нашла этому решение - Битый код. Канал, который даст тебе базу в мире ошибок.
🍸 Стань тем человеком, к которому будут обращаться и про которого будут говорить "Он сможет помочь"
