Зачем задавать переменной тип массив?

129
18 июня 2019, 05:20

Иногда встрачаю такие записи:

$arr = array(); // зачем писать эту строку?
$arr = [1,2,3];
print_r($arr);

Ещё где-то краем уха слышал, что от этой первой строчки, как-то снижается нагрузка на проц. Поправьте, если я слышал звон.

Answer 1

В вашем примере первая строчка - лишняя и она не дает никакого снижения нагрузки на проц. Наверное, вы видели немного другой вариант использования инициализации массивов:

$arr = [];
$arr[1] = 'one';
print_r($arr);

В таком случае инициализировать массив необходимо ($arr = [] или $arr = array()), так как если переменная $arr была использована где-то еще ранее в коде ($arr['product_id'] = 321), то в ней могут остаться данные, что может стать сюрпризом при выборке этих данных.

Answer 2

зачем писать эту строку?

В конкретно вашем примере - это делать не нужно. Инициализация "пустой" переменной с определением какого-то типа (string, array, integer) нужно в тех случаях, когда ниже по коду эта переменная будет принимать участие в каких-либо операциях. Например, если вы будете добавлять очередное значение в массив, то этот массив, пусть и пустой, уже должен существовать. Если будем говорить о строках, то тут может идти речь о конкатенации и чтобы "склеить" значения в переменной, в ней уже должна быть хоть какая-то строка. То же самое и числовыми типами и, например, возможных математических операциях.

$arr = [];
// где-то ниже
$arr[] = 'new value';
$str = '';
// где-то ниже
$str .= 'new value';
$int = 0;
// где-то ниже
$int++;

Что касается $arr = [] и $arr = array(), то принципиальной разницы нет. Первый вариант введен, как короткий синтаксис в PHP5.4

Answer 3

Для читабельности. В PHP нет способа объявить массив, поэтому иногда так и пишут. Но ваш пример очень прост. Обычно присвоение непустого массива происходит где-то чуть ниже в коде.

READ ALSO
Редирект id на pdo

Редирект id на pdo

Всем приветУ меня есть 3 textarea и input

150
Множественные API запросы c сервера

Множественные API запросы c сервера

Заранее прошу прощение, если вопрос поставлен неправильно: программирование - не моя основная специализация

126
Как выключить вывод ошибок в OpenCart?

Как выключить вывод ошибок в OpenCart?

Использую php 7 версию и Opencart 2Но на сайте выводятся ошибки типа: "Устаревшая функция"

114
Как подключить почту?

Как подключить почту?

Подключил шаблон AdminLTE для админской части сайта, там есть страница отображения почтыКак на эту страницу передавать сообщения приходящие...

110