Différence PHP entre array () et []

148

J'écris une application PHP et je veux m'assurer qu'elle fonctionnera sans erreur.

Le code d'origine:

<?php
$data = array('name' => 'test',
              'id'   => 'theID');

echo form_input($data);
?>

Est-ce que ce qui suit fonctionnerait sans erreur ou n'est pas recommandé pour une raison quelconque?

<?= form_input(['name' => 'test', 'id' => 'theID']); ?>

Y a-t-il une différence?

J'ai de nouveau regardé les données array()et la méthode de tableau court avec des crochets []dans PHP.net mais je ne suis pas sûr.

Et aussi, est-ce que la courte balise php convient <?= ?>pour faire écho? Y a-t-il un problème de version? (fourni est activé dans php.ini)

Monsieur Web
la source
1
La syntaxe de tableau court a été introduite dans PHP 5.4, il n'y a pas de différence et l'ancienne méthode ne sera pas supprimée, il est donc sûr de l'utiliser non plus. Les balises courtes sont généralement mal vues, je ne les utiliserais pas.
JimL
2
Tks, une référence / raison de ne pas utiliser de balises PHP courtes?
Mr.Web
7
Bien que <? =?> Ne soient pas réellement considérés comme des balises courtes, elles ne sont pas désactivées avec les balises courtes standard afaik, elles devraient donc convenir pour les échos simples.
Alexander Varwijk
1
Lecture intéressante sur les balises <? =?>. Selon l'un des commentaires "Rasmus Lerdorf lui-même a fait ce très engagement" programmers.stackexchange.com/questions/151661/…
johnsnails

Réponses:

223

Ce qui suit []est pris en charge dans PHP> = 5.4:

['name' => 'test', 'id' => 'theID']

Ceci est une syntaxe courte uniquement et en PHP <5.4 cela ne fonctionnera pas .

L'Alpha
la source
Il semble que 5.3.24 supporte également cette syntaxe. (impossible de confirmer directement)
Alberto
3
est-ce que tu as une différence?
Ali Akbar Azizi
26
@CooPer, Non, sauf si vous comptez la longueur de frappe.
The Alpha
7
Je voulais une référence et j'ai trouvé ceci : php.net/manual/en/language.types.array.php - "Depuis PHP 5.4, vous pouvez également utiliser la syntaxe de tableau court, qui remplace array () par []."
mrwaim
1
@ Prof83, vous pouvez utiliser en $data = new stdClass();$data->someProp = 'someValue';utilisant la PHPclasse standard et $obj = (object) ['foo'=>'bar', 'baz'=>'biz'];pour convertir un tableau ( en utilisant la coulée de type explicite) à un objet (stdClass) , mais en ce qui concerne la {}, il pourrait être mis en œuvre à l' avenir , mais pas sûr tho :-)
L'Alpha
19

En 2019, cela fait 7 ans que la []syntaxe a été ajoutée. C'est assez long pour tomber array()sauf dans les anciens programmes hérités, à mon avis.

David Spector
la source
3
@TheAlpha eh bien, même aujourd'hui, j'étais curieux de savoir s'il y avait des différences de performances
Cid
Avez-vous mesuré? Je suppose qu'il s'agit simplement d'une syntaxe alternative, qui ne devrait pas être mesurable.
David Spector
6

Si vous utilisez la version 5.3 ou précédente, vous ne pouvez pas l'utiliser en []tant que tableau ou tableau associatif. Si vous utilisez une version 5.4 ou ultérieure de PHP, vous pouvez utiliser soit array()ou []pour créer un tableau, un tableau associatif ou même un tableau multidimensionnel.

Md. A. Barik
la source
1

Et en ce qui concerne la <?= ?>partie de la question: elle n'est en grande partie pas mal vue, du moins pas en 2019.

  1. Une bonne ventilation technique: /software/151661/is-it-bad-practice-to-use-tag-in-php
  2. Remarque dans PSR-1 : les fichiers DOIVENT utiliser uniquement des balises <?phpet <?=.
  3. TL; DR: Il n'y a aucune raison pour laquelle vous ne pouvez pas ou ne devriez pas l'utiliser.
Aydin4ik
la source
-13

En utilisant php 7.2, pour moi, il semble plutôt que [je suis un tableau] {je suis un tableau semble fonctionner}. La différence est entre {}et []. Mon code

<p>
  <label for="post_category"> Cat 1 </label>
  <input type="checkbox" name="post_category{first}" value="cat1">
  <br />
  <label for="post_category{second}"> Cat 2 </label>
  <input type="checkbox" name="post_category" value="cat2">
</p>
Mahad Ali
la source
15
Où est le PHP? Vous écrivez du HTML.
domdambrogia
1
De plus, les accolades ne fonctionneront PAS pour le cas sur lequel OP a posé des questions. Vous ne pouvez pas créer un tableau avec des accolades, accéder uniquement aux éléments du tableau (depuis la v5.4 jusqu'à maintenant - v7.3).
Aydin4ik