г. Тверь

Меню

PHP и Backend-разработка

Массивы в PHP

Введение в Массивы в PHP

Массивы являются одной из основных структур данных в PHP, позволяя хранить наборы значений под одним именем. Они могут содержать любые типы данных, включая другие массивы. Давайте рассмотрим основы работы с массивами в PHP.

Создание массивов

Массивы в PHP могут быть созданы несколькими способами. Наиболее распространенный способ - использование функции array():


$numbers = array(1, 2, 3, 4, 5);
$colors = array("red", "green", "blue");
$person = array("name" => "John", "age" => 30, "city" => "New York");

Доступ к элементам массива

Элементы массива могут быть доступны по их индексам или ключам:


echo $numbers[0]; // Выводит: 1
echo $colors[1]; // Выводит: green
echo $person["age"]; // Выводит: 30

Манипуляции с массивами

PHP предоставляет множество функций для работы с массивами, включая добавление, удаление, сортировку и т. д. Например:


array_push($numbers, 6); // Добавляет элемент в конец массива
unset($colors[0]); // Удаляет элемент с определенным индексом
sort($numbers); // Сортирует массив

Итерация по массивам

Для перебора элементов массива можно использовать циклы, такие как foreach:


foreach ($person as $key => $value) {
    echo "$key: $value 
"; }

Многомерные массивы

PHP также поддерживает многомерные массивы, которые представляют собой массивы, содержащие другие массивы в качестве элементов. Это позволяет организовывать данные в более сложных структурах. Например:


$students = array(
    array("name" => "John", "age" => 20),
    array("name" => "Alice", "age" => 22),
    array("name" => "Bob", "age" => 21)
);

echo $students[0]["name"]; // Выводит: John
echo $students[1]["age"]; // Выводит: 22

Ассоциативные массивы

PHP также позволяет создавать ассоциативные массивы, где ключи являются строками. Они полезны для хранения пар ключ-значение, например:


$person = array("name" => "Alice", "age" => 25, "city" => "London");
echo $person["city"]; // Выводит: London

Встроенные функции для работы с массивами

PHP предоставляет широкий набор встроенных функций для работы с массивами. Например, count() для подсчета элементов массива, array_merge() для объединения массивов, и многое другое.


$numbers = array(1, 2, 3);
$colors = array("red", "green", "blue");
$combined = array_merge($numbers, $colors);
print_r($combined); // Выводит: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => red [4] => green [5] => blue )

Функции обратного вызова

PHP предоставляет мощный механизм обратного вызова для работы с массивами. Например, функция array_map() применяет заданную функцию ко всем элементам массива и возвращает новый массив с результатами. Это может быть полезно для преобразования данных в массиве:


$numbers = array(1, 2, 3, 4, 5);
$squared = array_map(function($x) { return $x * $x; }, $numbers);
print_r($squared); // Выводит: Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 )

Фильтрация массивов

PHP также предлагает функции для фильтрации массивов. Например, array_filter() используется для фильтрации элементов массива на основе заданной функции обратного вызова:


$numbers = array(1, 2, 3, 4, 5);
$even = array_filter($numbers, function($x) { return $x % 2 == 0; });
print_r($even); // Выводит: Array ( [1] => 2 [3] => 4 )

Работа с ключами

PHP предоставляет возможности для работы с ключами массивов. Например, функция array_keys() возвращает массив с ключами исходного массива:


$person = array("name" => "Alice", "age" => 25, "city" => "London");
$keys = array_keys($person);
print_r($keys); // Выводит: Array ( [0] => name [1] => age [2] => city )

Слияние массивов с сохранением ключей

Иногда нужно объединить два массива, сохраняя ключи. PHP предоставляет функцию array_merge_recursive() для этой цели:


$array1 = array("a" => "red", "b" => "green");
$array2 = array("a" => "blue", "b" => "yellow", "c" => "orange");
$result = array_merge_recursive($array1, $array2);
print_r($result); 
// Выводит: Array ( [a] => Array ( [0] => red [1] => blue ) [b] => Array ( [0] => green [1] => yellow ) [c] => orange )

Сериализация

В PHP есть функции serialize() и json_encode(), которые преобразуют массивы в строковое представление. Это полезно для сохранения данных в файл или передачи через сеть:


$person = array("name" => "John", "age" => 30, "city" => "New York");
$serialized = serialize($person);
$json_encoded = json_encode($person);

echo $serialized; // Выводит: a:3:{s:4:"name";s:4:"John";s:3:"age";i:30;s:4:"city";s:8:"New York";}
echo $json_encoded; // Выводит: {"name":"John","age":30,"city":"New York"}

Десериализация

Функции unserialize() и json_decode() преобразуют строки обратно в массивы:


$serialized_data = 'a:3:{s:4:"name";s:4:"John";s:3:"age";i:30;s:4:"city";s:8:"New York";}';
$json_data = '{"name":"John","age":30,"city":"New York"}';

$person_from_serialized = unserialize($serialized_data);
$person_from_json = json_decode($json_data, true); // Второй параметр true указывает на преобразование в ассоциативный массив

print_r($person_from_serialized); // Выводит: Array ( [name] => John [age] => 30 [city] => New York )
print_r($person_from_json); // Выводит: Array ( [name] => John [age] => 30 [city] => New York )

Эти функции обеспечивают простой способ сохранения и восстановления данных массивов в PHP.

Переменные в PHP

Общие сведения

В PHP переменные начинаются с символа доллара ($), за которым следует имя переменной. PHP является слабо типизированным языком, что означает, что тип данных переменной определяется автоматически во время выполнения программы на основе значения, которое ей было присвоено. Типы данных в PHP включают в себя целые числа (integer), числа с плавающей точкой (float), строки (string), логические значения (boolean), массивы (array), объекты (object), ресурсы (resource), и null.

PHP также поддерживает динамическую типизацию, что означает, что переменная может быть переопределена для хранения значения другого типа во время выполнения программы. Например, переменная, которая изначально содержала число, может быть переопределена для хранения строки позже в программе без необходимости явно объявлять новый тип данных.


// Целое число
$integerVar = 42;

// Число с плавающей точкой
$floatVar = 3.14;

// Строка
$stringVar = "Hello, world!";

// Логическое значение
$boolVar = true;

// Массив
$arrayVar = array(1, 2, 3, 4, 5);

// Объект
class MyClass {
    public $property;
    public function __construct($val) {
        $this->property = $val;
    }
}

$objectVar = new MyClass("Some value");

// Ресурс (например, открытый файл)
$fileHandle = fopen("example.txt", "r");

// Null
$nullVar = null;


Рассмотрим другие примеры


// Пример динамической типизации
$dynamicVar = 10; // $dynamicVar содержит целое число
$dynamicVar = "Hello"; // Теперь $dynamicVar содержит строку

// Пример использования переменных
$a = 5;
$b = 10;
$sum = $a + $b; // $sum будет содержать сумму $a и $b, то есть 15

// Пример использования массива
$fruits = array("apple", "banana", "orange");
echo $fruits[0]; // Выведет "apple"

// Пример использования объекта
$car = new stdClass();
$car->make = "Toyota";
$car->model = "Camry";
echo $car->make; // Выведет "Toyota"

// Пример работы с ресурсами (например, чтение из файла)
$fileHandle = fopen("example.txt", "r");
$data = fread($fileHandle, filesize("example.txt"));
fclose($fileHandle);
echo $data; // Выведет содержимое файла example.txt

Работа со строками в PHP


// Объединение строк
$str1 = "Hello";
$str2 = " world!";
$combinedStr = $str1 . $str2; // $combinedStr содержит "Hello world!"

// Получение длины строки
$length = strlen($combinedStr); // $length содержит 12

// Преобразование строки к верхнему регистру
$upperCase = strtoupper($combinedStr); // $upperCase содержит "HELLO WORLD!"

// Преобразование строки к нижнему регистру
$lowerCase = strtolower($combinedStr); // $lowerCase содержит "hello world!"

// Получение подстроки
$subStr = substr($combinedStr, 6, 5); // $subStr содержит "world"

// Замена подстроки
$replacedStr = str_replace("world", "John", $combinedStr); // $replacedStr содержит "Hello John!"

// Разделение строки на массив по заданному разделителю
$parts = explode(" ", $combinedStr); // $parts содержит массив с элементами "Hello" и "world!"

// Объединение массива строк в одну строку с заданным разделителем
$newCombinedStr = implode("-", $parts); // $newCombinedStr содержит "Hello-world!"

// Удаление лишних пробелов в начале и конце строки
$trimmedStr = trim("   Hello world!   "); // $trimmedStr содержит "Hello world!"

Подключение к MySQL

Пример подключения к БД для работы с данными


// Параметры подключения к базе данных
$servername = "localhost"; // Имя сервера базы данных
$username = "username"; // Имя пользователя базы данных
$password = "password"; // Пароль пользователя базы данных
$dbname = "database"; // Имя базы данных

// Создание соединения
$conn = new mysqli($servername, $username, $password, $dbname);

// Проверка соединения
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
echo "Connected successfully";

// Запрос к базе данных
$sql = "SELECT id, name, email FROM users";
$result = $conn->query($sql);

// Проверка наличия результатов
if ($result->num_rows > 0) {
    // Вывод данных каждой строки
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "
"; } } else { echo "0 results"; } // Закрытие соединения $conn->close();