PHPの配列の括弧の違いは?WordPressでよく見るarray()と[]。 / いがわ

.

Memo

PHPのカッコのarray()と[]。WordPressでの使い方の例。

PHPの配列

PHPの配列の括弧の違い。

array()と[]。

PHPのバージョンアップによる配列の短縮構文で、array()を[]で置き換えることが出来るようになっている。

array()でも[]でも、配列変数argsのキーにダブルアロー演算子(=>)で値を入れられる。

PHP5.4からは、配列の短縮構文を使用できる。

PHP5.4から配列の短縮構文は使用できるようになっているが、気付けばすでに5年以上が経っている。

しかしネット上には様々なコードがあり、自分自身も含め、短縮されていない構文で書かれていることも多い。

良い情報はそれ自体でありがたいことだが、プログラムの場合、括弧ひとつ違ったり抜けたりするとすぐさまエラーとなるのでやっかい。

[]はarray()を短縮した書き方なので、結果は同じ。

array()と[]は同じ役割なので、イメージとしては、「array丸括弧 = 角括弧」という感じ。

ちなみにWordPressでよく使われるカスタム投稿タイプの連想配列と、ページ送りのプラグインWP-PageNaviのコードの例は下記のようになる。

array()と[]の使用例。

array()を使った例。

WP Queryでの例:
PHP
<?php
 $args = array(
 'post_type' => 'post',
 'posts_per_page' => 1,
 'paged' => $paged,
 ); 
?>

()丸括弧、または小括弧やパーレンとも読む。)

[]を使った例。

WP Queryでの例:
PHP
<?php
 $args = [
 'post_type' => 'post',
 'posts_per_page' => 1,
 'paged' => $paged,
 ];
?>

※ []は角括弧、または大括弧やブラケットとも読む。)

array()と[]は同じ内容を出力する。

出力内容は同じ。

上記の2つの書き方は、同じ内容を出力する。ただし、古いバージョンの記述方法は、いずれ非推奨になる可能性はありえる。

ほとんどのサーバーではPHPの対応バージョンは上がっているので、今後新規で制作する際は新しい書き方である[]を使った配列で記述した方が無難かもしれない。

ちなみにVS Codeでは、[]の使い方など、間違いがある箇所では色と波線でエラー表示が出るので、これを一つの目安として学んでいくのも良いかも。

PHPの角括弧の例。


array()はPHPの古いバージョンの書き方。

array()を使った書き方。

いずれ非推奨になる可能性や、サーバーの処理速度に影響する可能性もあり得る。

WordPressのシェア率などを踏まえるとすぐに非推奨になるとは考えにくい。

ただもしかすると、サーバーのPHPのバージョンが上がるとPHPの走りが良くなるなど、サイトの高速化につながる可能性はある。

register_taxonomyでの例。

<?php
function add_custom_taxonomy(){
 register_taxonomy( 'articles-cat',
 'articles', array( 'label' => 'カテゴリー',
 'singular_label' => '記事カテゴリー',
 'hierarchical' => true, 'public' => true, ) );
 }
 add_action('init', 'add_custom_taxonomy');
?>
  • add_custom_taxonomyは関数名なので、任意で決められる。ただし使い回す機会が多いのでわかりやすい名前で統一した方が良いと思う。
  • add_action(アクションフック)はfunctionの先に書いても後で書いてもどちらでも動く。CSSのanimationプロパティがセレクタの前でも後でも変わらないように。

WP-PageNaviでの例。

<?php
 if(function_exists('wp_pagenavi')) wp_pagenavi(array('query' => $loop));
?>

[]はPHPの新しいバージョンの書き方。

[]を使った書き方。

register_taxonomyでの例。

<?php
 function add_custom_taxonomy(){
  register_taxonomy(
  'articles-cat',
  'articles',
  [
  'label' => 'カテゴリー',
  'singular_label' => '記事カテゴリー',
  'hierarchical' => true, 'public' => true,
  ]
 );
}
add_action('init', 'add_custom_taxonomy');
?>

WP-PageNaviでの例。

<?php
 if(function_exists('wp_pagenavi')) wp_pagenavi(['query' => $loop]);
?>

PHPの配列のカッコの違い?のイメージ画像。

以上、参考になれば幸いです。


Webデザインは実務数年、職業訓練校講師数年、フリーランス数年、計15年以上のキャリアがありますが、一気にがぁっと書いているので「です・ます調」ではありません。(元々はメモ書きでした。) 事実や経験、調査や検証を基にしていますが、万一なにかしら不備・不足などがありましたらすみません。お知らせいただければ訂正いたします。 写真は主にUnsplashPixabayのフリー素材を利用させていただいております。その他の写真や動画もフリー素材やパブリックドメイン、もしくは自前のものを使用しております。

井川 宜久 / Norihisa Igawa
デザイナー、ディレクター、講師、コーチ / 井川宜久

WordPress 関連メモ。


免責事項について

  • 記事ページ(Memosのページ)は当初は文字通りメモ書きでした。その後、修正や更新をしております。
  • 事実や経験、調査や検証を基にしていますが、万一なにかしら不備・不足などがありましたらすみません。お知らせいただければ早急に対応いたします。
  • 一個人のポートフォリオサイトですので、万一損害・トラブル等が発生した場合でも、一切の責任を負いかねます。