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)


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 .


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.


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.


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.

-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>

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.