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.