Нет запятой после последнего элемента в массиве?

Я заметил, что после последнего элемента некоторые массивы не имеют запятой. У меня есть массив:

$first_name = array(
              'name'        => 'first_name',
              'id'          => 'first_name',
              'maxlength'   => '20',             
              'class'       => 'text',
              'placeholder' => 'First name',
            );

У меня есть запятая, но нет ошибок php. Должен ли я хранить или удалять запятую?

Ответы

Ответ 1

Это предпочтение стиля, как упоминалось в другом месте, однако я бы посоветовал утверждать себя против добавления этой конечной запятой в PHP, поскольку он синтаксически недействителен на некоторых языках. В частности, я думаю об использовании Internet Explorer этих типов конечных запятых в Javascript, которые, как известно, являются трудными ошибками для поиска, когда скрипты терпят неудачу в IE, а затем следуют везде. Он также нарушит достоверность JSON и недействителен в списке SQL SELECT, среди других потенциальных проблем.

Опять же, это вопрос предпочтения, но может вызвать проблемы в других областях.

Ответ 2

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

Ответ 3

Звучит как предпочтение стиля, если оба являются синтаксически правильными

Ответ 4

Запятая после последнего элемента может не работать на каждом языке. Однако он делает различия в очистке систем управления версиями для поддерживаемых языков.

/* From */
$a = array(
    'element_w',
    'element_x',
);
/* To */
$a = array(
    'element_w',
    'element_x',
    'element_y', /* Only this line will show in version control. */
);


/* From */
$a = array(
    'element_w',
    'element_x'
);
/* To */
$a = array(
    'element_w',
    'element_x', /* These two lines               */
    'element_y'  /* will show in version control. */
);