【 PHP 】PHP8に入門してみた 53日目 PHPの基本 ( 配列の補足 ブレイクスルー )
PHP8技術者認定初級試験 が始まるようなので 試験に向けて (できるだけ)勉強しようと思います! 使用する書籍は独習PHP 第4版(山田 祥寛)|翔泳社の本 (shoeisha.co.jp) となります。
配列
ブレイクスルー!
実は配列
と連想配列
は仲間というわけではなく、同一人物(人ではありませが)という衝撃の事実が分かりました。
PHP
では$data = ['test', '01', '02']
というは$data = [0 => 'test', 1 => '01', 2 => '02']
という連想配列と同等なのだそうです。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PHPの基本</title>
</head>
<body>
<?php
// print命令は指定された文字列を表示するための命令です。
$msg = 'こんにちは、変数の世界! <br />';
print $msg;
print 'こんにちは、皆さん! ';
print '<br />';
$data01 = ['test', '01', '02'];
$data02 = [0 => 'test', 1 => '01', 2 => '02'];
print_r($data01);
print '<br />';
print '<br />';
print_r($data01);
?>
</body>
</html>
確かに同じです。
配列
はキー0から自動で割り当てられた連想配列
なんですね。
勉強になりました🤓
すべての
配列
は連想配列
として実装されている
一部だけ連想配列にすることもできるようです。
正確には「一部だけ明示的に連想配列形式(キーバリュー)として定義できる」ということかと思います。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PHPの基本</title>
</head>
<body>
<?php
// print命令は指定された文字列を表示するための命令です。
$msg = 'こんにちは、変数の世界! <br />';
print $msg;
print 'こんにちは、皆さん! ';
print '<br />';
$data01 = [0 => '一部分だけ', '連想配列に', 2 => 'することもできます。', 5 => 'この場合はどのようなキーが', '割り当てられるのでしょう?'];
print_r($data01);
print '<br />';
?>
</body>
</html>
意図的にキーを指定しなった要素について、ひとつ前の要素のキーに+1した値がキーとして自動的に割り当てられたことが分かります。
キーの値をマイナスにしてみると・・・
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PHPの基本</title>
</head>
<body>
<?php
// print命令は指定された文字列を表示するための命令です。
$msg = 'こんにちは、変数の世界! <br />';
print $msg;
print 'こんにちは、皆さん! ';
print '<br />';
$data01 = [-10 => 'キーをマイナスにしたら', 'どうなるのでしょう?', -1 => 'PHPのバージョンによって', 5 => 'キーの値が異なるらしい!'];
print_r($data01);
print '<br />';
?>
</body>
</html>
PHP8
では前例と同様に+1された値が割り当てられます。
バージョン8よりもまえ(PHP7.4以前)はひとつ前の要素のキーの値がマイナス値の場合、自身のキーの値は0になるようです。
挙動が違うので注意が必要です。
メモ
この発想はありませんでした!
混在しても問題ありません!
自由すぎるPHP
に万歳。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PHPの基本</title>
</head>
<body>
<?php
// print命令は指定された文字列を表示するための命令です。
$msg = 'こんにちは、変数の世界! <br />';
print $msg;
print 'こんにちは、皆さん! ';
print '<br />';
$data01 = [-10 => 'キーをマイナスにしたら', 'どうなるのでしょう?', 'なんということでしょう・・・' => 'PHPのバージョンによって', 'キーの値が異なるらしい!'];
print_r($data01);
print '<br />';
?>
</body>
</html>
ディスカッション
コメント一覧
まだ、コメントがありません