Я в сетях:

Облако тегов


Типы переменных. Массивы в PHP

Типы переменных. Массивы в PHP

Вернуться на главную

by root posted 25.07.2016 1088

Раздел: Теория и практика PHP Теги: теория, php, начинающим, переменные, массивы

Всем привет! Начнем рассуждения о массивах и их природе в языке php. Прежде всего вспомним 8 основных типов переменных: integer, double, string, array, object,  resource, boolean, NULL. Каждый из них кратко объясню на конкретном примере ниже.

Целые числа (integer)

// объявляем переменную
$a = 10;
if (is_int($a)) echo 'a is integer';
// или
echo gettype($a); // integer

Вещественные или десятичные числа (double)

// объявляем переменную
$a = 6.1;
$b = .5; // или 0.5
if (is_double($a)) echo 'a is double';
// или
echo gettype($a); // double

Строка (string)

// объявляем переменную
$a = 'Russia';
if (is_string($a)) echo 'a is string';
// или
echo gettype($a); // string

Объект или ссылка на объект (object)

В PHP с версии 5 переменные хранят не сами объекты, а ссылки на них!

// объявляем переменную
$a = new Object();
if (is_object($a)) echo 'a is object';
// или
echo gettype($a); // object

Ресурс (resource)

// объявляем переменную
$a = fopen("filename.txt","w");
if (is_resource($a)) echo 'a is resource';
// или
echo gettype($a); // resource

Логический тип (boolean)

// объявляем переменную
$a = true;
if (is_bool($a)) echo 'a is boolean';
// или
echo gettype($a); // boolean

Переменная не имеет значения, не присвоен еще тип (NULL)

// объявляем переменную
$a = null;
if (is_null($a)) echo 'a is NULL';
// или
echo gettype($a); // NULL

Некоторые программисты еще выделяют тип данных "unknown type" - неизвестный тип данных, но я не считаю это таковым.

Я специально выше упустил тип данных "Array", чтобы разобрать его подробнее.

Массивы или коллекции (array)

Массивы очень часто используются программистами, так как позволяют очень эффективно хранить однотипную (и разнотипную) информацию в себе. Допустим, нам нужно обрабатывать информацию о людях из одного учебного класса. Можно решить данную задачу создав для каждого человека отдельную переменную, но это не является удобным и эффективным методом, ибо придется держать в уме наименование каждой переменной при обработке, а также просто будем впустую использовать серверные мощности. Тут нам и помогут массивы.

// объявляем переменную
$class = array( 'Иванов Петр', 'Семенов Александр', 'Петров Михаил', 'Шишков Илья' );
if (is_array($class)) echo 'a is array';
// или
echo gettype($class); // array

Массивы в свою очередь бывают двух типов: обычные и ассоциативные. Первые мы уже рассмотрели, а вот следующие дают еще большую информативность и гибкость при обработке. Рассмотрим тот же пример с классом, только теперь нам нужно знать возраст каждого из учеников.

 

// объявляем переменную
$class = array( 'Иванов Петр' => 17, 'Семенов Александр' => 16, 'Петров Михаил' => 17, 'Шишков Илья' => 18);
echo $class['Иванов Петр']; // 17

Имя человека в данном массиве является ключем, а возраст - значением. Не будем останавливаться на достигнутом и представим информацию о классе в расширенном варианте.

// объявляем переменную
$class = array( 
'Иванов Петр' => array('age' => 17, 'address' => 'ул. Кошкина, д. 68, кв.5'), 
'Семенов Александр' => array('age' => 16, 'address' => 'ул. Ключевского, д. 2, кв.77'),
'Петров Михаил' => array('age' => 17, 'address' => 'ул. Салтыкова-Щедрина, д. 77, кв.3'),
'Шишков Илья' => array('age' => 18, 'address' => 'ул. Молочникова, д. 3, кв.21')
);
echo $class['Иванов Петр']['address']; // ул. Кошкина, д. 68, кв.5

Таким образом, теперь мы можем узнать адрес и возраст каждого ученика из вложенного массива под ключем его имени. Вернемся к обычному массиву и рассмотрим несколько способов добавления информации.

// создаем массив - 1 способ
$a = array(10, 5);
// 2 способ
$a = array();
$a[] = 10;
$a[] = 5;
// 3 способ с версии php 5.4
$a = [10, 5];
echo $a[0]; // 10

В php существуют полезные функции для работы с массивами.

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

isset() и empty() - определяем есть ли такой массив и пуст ли он (применяется не только к массивам)

list() - распределяем элементы массива по переменным

count() - определяем количество элементов в массиве

array_merge() - объединяет два массива в один

Приведу пример по каждому случаю


if( !isset($a) ) {
echo 'переменная $a не существует'; // выведет на экран
}

$a = array();

if( empty($a) ) {
echo 'массив $a пустой'; // выведет на экран
}

$a = array(10, 20);
list($b, $c) = $a;
echo $b.' and '.$c; // выведет: 10 and 20

echo count($a); // выведет 2;

$b = array(30);
$c = array_merge($a, $b);

print_r($c); // выведет array([0] => 10, [1] => 20, [3] => 30)

В последнем случае я использовал функцию print_r(), которая выводит массив в понятном виде (особенно если ее вывод оформить в теги

). Не забывайте также, что нумерация элементов в массиве начинается с нуля, так в массиве $c 3 элемента, но индекс последнего 2!
comments powered by Disqus