array()と[]のPHPの違い


148

PHPアプリを作成していますが、エラーなく動作することを確認したいと思います。

元のコード:

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

echo form_input($data);
?>

以下はエラーなしで機能しますか、または何らかの理由で推奨されませんか?

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

違いはありますか?

PHP.net のデータarray()と角かっこ[]を使用した短い配列メソッドをもう一度調べましたが、よくわかりません。

また、短いphpタグ<?= ?>はエコーしても問題ありませんか?バージョンの問題はありますか?(php.iniで有効になっている場合)


1
短い配列構文はPHP 5.4で導入されました。違いはなく、古いメソッドは削除されないため、どちらを使用しても安全です。短いタグは通常眉をひそめられます、私はそれらを使用しません。
JimL 2013

2
Tks、php shortタグを使用しないことに関する参照/理由は?
Mr.Web 2013

7
<?=?>は実際にはショートタグとは見なされませんが、標準のショートタグafaikでは無効にされないため、単純なエコーには問題ありません。
Alexander Varwijk 2013


1
<?=?>タグの興味深い読み。コメントの一つによると、「ラスマス・ラードフ自身はそれが非常にコミット製」programmers.stackexchange.com/questions/151661/...
johnsnails

回答:


223

[]PHP> = 5.4では以下がサポートされています。

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

これは短い構文であり、PHP <5.4では機能しません


5.3.24もこの構文をサポートしているようです。(直接確認できませんでした)
Alberto

3
あなたに違いはありますか?
Ali Akbar Azizi 2014

26
@CooPer、いいえ、タイピングの長さを数えない限り。
アルファ

7
参考にしたいのですが、これを見つけました-php.net/manual/en/language.types.array.php-「PHP 5.4以降では、array()を[]に置き換える短い配列構文も使用できます。」
mrwaim 2015

1
@ Prof83、標準クラスを使用$data = new stdClass();$data->someProp = 'someValue';して配列を(明示的な型キャストを使用して)オブジェクト(stdClass)に変換できますが、に関しては将来実装される可能性がありますが、確実ではありません:-)PHP$obj = (object) ['foo'=>'bar', 'baz'=>'biz'];{}
アルファ版

19

2019年現在、[]構文が追加されてから7年になります。array()私の意見では、それは古いレガシープログラムを除いて、ドロップするのに十分な長さです。


3
@TheAlphaまあ、今日でも、パフォーマンスの違いがあるかどうか知りたいと思っていました
Cid

測定しましたか?私はそれらが単に代替構文であることを想定していますが、それは測定可能ではありません。
David Spector、

6

5.3以前のバージョンを使用し[]ている場合は、配列および連想配列としては使用できません。PHPの5.4以降のバージョンを使用している場合は、array()または[]を使用して、配列、連想配列、さらには多次元配列を作成できます。


1

そしてに関する<?= ?>質問の一部を:それは主にされていない、少なくともない2019年、ひんしゅくを買います。

  1. 良い技術的な内訳:https : //softwareengineering.stackexchange.com/questions/151661/is-it-bad-practice-to-use-tag-in-php
  2. PSR-1のメモ:ファイルタグ<?php<?=タグのみを使用する必要があります。
  3. TL; DR:使用できない、または使用すべきでない理由はありません。

-12

PHP 7.2を使用すると、私はむしろ[配列です] {配列は機能しているようです}のようです。違いは、間にある{}[]。私のコード

<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
PHPはどこにありますか?あなたはHTMLを書いています。
domdambrogia

1
また、中括弧は、OPが尋ねたケースでは機能しません。中括弧で配列を作成することはできません。配列要素にアクセスするだけです(v5.4以降-v7.3以降)。
Aydin4ik
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.