PHPのデータ型を理解する

提供:Dev Guides
移動先:案内検索

著者は、 Write for DOnations プログラムの一環として、 Open Sourcing Mental IllnessLtdを選択して寄付を受け取りました。

序章

PHPでは、すべてのプログラミング言語と同様に、データ型を使用して特定の種類のデータを分類します。 使用する特定のデータ型によって、それに割り当てることができる値とそれに実行できること(実行できる操作を含む)が決まるため、これは重要です。

このチュートリアルでは、PHPにネイティブな重要なデータ型について説明します。 これはデータ型の徹底的な調査ではありませんが、PHPで使用できるオプションを理解するのに役立ちます。

データ型について考える1つの方法は、現実の世界で使用するさまざまな種類のデータを検討することです。 2つの異なるタイプは数字と単語です。 これらの2つのデータ型は異なる方法で機能します。 3 + 4を追加して7を取得し、starfishを組み合わせてstarfishを取得します。

数字や単語など、さまざまなデータ型を相互に評価し始めると、物事はあまり意味をなさなくなり始めます。 たとえば、次の方程式には明確な答えがありません。

'sky' + 8

コンピューターの場合、単語や数字など、各データ型はまったく異なると考えることができるため、値を割り当てるためにそれらをどのように使用するか、および操作を通じてそれらをどのように操作するかについて注意する必要があります。

データ型の操作

PHPは緩く型付けされた言語です。 これは、デフォルトで、値が予想されるデータ型と一致しない場合、PHPは、可能な場合、予想される型と一致するように間違ったデータ型の値を変更しようとすることを意味します。 これは型ジャグリングと呼ばれます。 たとえば、stringを期待するが、代わりに2の値を持つintegerを受け取る関数は、入力値を期待されるstringタイプに変更します。 "2"の値。

ファイルごとに厳密モードを有効にすることが可能であり、推奨されています。 これにより、厳密なデータ型に準拠していない可能性のある追加のコードパッケージを使用できるようにしながら、制御するコードでデータ型を適用できます。 厳密なタイプはファイルの先頭で宣言されます:

<?php
declare(strict_types=1);
...

厳密モードでは、型宣言に正確に対応する値のみが受け入れられます。 それ以外の場合は、TypeErrorがスローされます。 この規則の唯一の例外は、int値がfloat型宣言を渡すことです。

数字

PHPに入力した数値は、数値として解釈されます。 入力するデータ型の種類を宣言する必要はありません。 PHPは、小数点なしで記述された数値を integer (138など)と見なし、小数点付きで記述された数値を float (138.0など)と見なします。

整数

数学と同様に、コンピュータープログラミングの整数は、正、負、または0(…、-1、0、1、…)の整数です。 整数は、intとも呼ばれます。 他のプログラミング言語と同様に、4桁以上の数字でコンマを使用しないでください。したがって、プログラムで1,000の数字を表すには、1000と記述します。

次のように整数を出力できます。

echo -25;

どちらが出力されますか:

Output-25

変数を宣言することもできます。この場合、これは、次のように、使用または操作している数値のシンボルです。

$my_int = -25;
echo $my_int;

どちらが出力されますか:

Output-25

PHPでも整数を使って数学を行うことができます。

$int_ans = 116 - 68;
echo $int_ans;

どちらが出力されますか:

Output48

整数はPHPプログラム内でさまざまな方法で使用できます。言語についてさらに学習し続けると、整数を操作してこのデータ型について理解する機会がたくさんあります。

浮動小数点数

浮動小数点数またはfloatは実数であり、有理数または無理数のいずれかになります。 このため、浮動小数点数は、9.0-116.42などの小数部分を含むことができる数にすることができます。 PHPプログラムでfloatを考えるために、これは小数点を含む数値です。

整数で行ったように、次のように浮動小数点数を出力できます。

echo 17.3;

どちらが出力されますか:

Output17.3

次のように、floatを表す変数を宣言することもできます。

$my_flt = 17.3;
echo $my_flt;

どちらが出力されますか:

Output17.3

また、整数の場合と同様に、PHPでもfloatを使用して数学を行うことができます。

$flt_ans = 564.0 + 365.24;
echo $flt_ans;

どちらが出力されますか:

Output929.24

3は整数を参照し、3.0は整数を参照するため、整数と浮動小数点数の場合、33.0と等しくないことに注意してください。フロートを指します。 これにより、プログラムの機能が変わる場合と変わらない場合があります。

数字は、計算、アイテムやお金のカウント、時間の経過を処理するときに役立ちます。

文字列

文字列は、文字、数字、または記号で構成される1つ以上の文字のシーケンスです。 このシーケンスは、一重引用符または二重引用符""で囲まれています。

echo 'This is a 47 character string in single quotes.'
echo "This is a 47 character string in double quotes."

どちらの行も同じ方法で値を出力します。

OutputThis is a 47 character string in single quotes.
This is a 47 character string in double quotes.

一重引用符または二重引用符のいずれかを使用することを選択できますが、どちらを選択しても、プログラム内で一貫している必要があります。

プログラム「Hello、World!」 Hello、World!というフレーズを構成する文字として、文字列をコンピュータープログラミングで使用する方法を示します。 文字列です:

echo "Hello, World!";

他のデータ型と同様に、文字列を変数に格納して結果を出力できます。

$hw = "Hello, World!"
echo $hw;

いずれにせよ、出力は同じです。

OutputHello, World!

数値と同様に、プログラム内の文字列を操作して目的の結果を達成するために、文字列に対して実行できる操作は多数あります。 文字列は、ユーザーに情報を伝達するため、およびユーザーがプログラムに情報を伝達するために重要です。

ブール値

ブール値またはboolのデータ型は、trueまたはfalseの2つの値のいずれかになります。 ブール値は、数学の論理ブランチに関連付けられている真理値を表すために使用されます。

ブール値を宣言するときは、引用符を使用しません。 引用符で囲まれたものはすべて文字列と見なされます。 PHPは、ブール値を宣言するときに大文字と小文字を区別しません。 TrueTRUEtrue、およびtRuEはすべて同じように評価されます。 PHP-FIG が発表したスタイルガイドに従う場合、値はすべて小文字のtrueまたはfalseである必要があります。

数学の多くの演算は、TrueまたはFalseのいずれかに評価される答えを提供します。

  • より大きい
    • 500> 100 True
    • 1> 5 False
  • 未満
    • 200 <400True
    • 4 <2False
  • 同等
    • 5 = 5 True
    • 500 = 400 False

他のデータ型と同様に、ブール値を変数に格納できます。 数値や文字列とは異なり、ブールtrue値は文字列"1"に変換されますが、ブールfalseは変換されるため、echoを使用して値を出力することはできません。 ""(空の文字列)に変換されます。 これにより、「型ジャグリング」により、ブール値と文字列値の間で変数を前後に変換できます。 ブール値を出力するには、いくつかのオプションがあります。 変数の値とともに型を出力するには、var_dumpを使用します。 変数の値の文字列表現を出力するには、var_exportを使用します。

$my_bool = 4 > 3;
echo $my_bool;
var_dump($my_bool);
var_export($my_bool);

4は3より大きいため、次の出力を受け取ります。

Output1
bool(true)
true

echo行は、trueブール値を1の文字列に変換します。 var_dumpは、trueの値とともにboolの変数タイプを出力します。 var_exportは、trueである値の文字列表現を出力します。

PHPでより多くのプログラムを作成するにつれて、ブール値がどのように機能するか、およびTrueまたはFalseのいずれかに評価されるさまざまな関数および操作がプログラムのコースをどのように変更できるかを理解するようになります。

ヌル

NULLタイプは値がありません。 変数用のスペースを予約します。 これにより、PHPは変数について知ることができますが、それでも未設定と見なされます。 NULLタイプで可能な値は、大文字と小文字を区別しないnullの値のみです。 PHPが宣言されていない変数にアクセスしようとすると、警告がスローされます。

echo $name;

変数が設定されていないことを警告しますが、コードは処理を続行します。

OutputPHP Warning:  Undefined variable $name

この警告を防ぐ一般的な方法の1つは、isset関数を使用してその変数が設定されていることを確認することです。

if (isset($name)) {
    echo $name;
}

これによりエコーが完全にスキップされ、警告はスローされません。 このタイプのエラーを防ぐ2つ目の方法は、空の文字列などの変数にプレースホルダー値を設定することです。

$name = '';
echo "Hello ".$name;

$nameの値は空の文字列であるため、名前なしでHelloが表示されるようになりました。

OutputHello 

これらのソリューションは両方とも有効で有用です。 ただし、$nameの値を空の文字列に設定すると、その値は実際に設定されます。

$name = '';
if (isset($name)) {
    echo "Hello ".$name;
}

$nameの値が空の文字列に設定されているため、名前なしでHelloも表示されます。

OutputHello 

ほとんどの課題と同様に、複数の解決策があります。 1つの解決策は、変数をnull値に設定することです。 これにより、その変数用のスペースが保持され、PHPがエラーをスローするのを防ぎますが、それでも変数は「設定されていない」と見なされます。

$name = null;
echo $name;
if (isset($name)) {
    echo "Hello ".$name;
}

変数は「宣言」されているため、echoが変数にアクセスしようとしてもエラーは発生しません。 また、値がないため、何も表示されません。 $name変数は設定されているとは見なされないため、条件もfalseと評価されます。

var_dumpを使用して、PHPがNULL変数をどのように評価するかを確認できます。

$name = null;
var_dump($name);

これは、タイプがNULLであることを示しています。

OutputNULL 

他の変数タイプほど一般的ではありませんが、アクションを実行するが戻り値を持たない関数の戻りタイプとしてNULLがよく使用されます。

配列

PHPの配列は、実際には順序付けられたマップです。 map は、値をキーに関連付ける、つまり「マップ」するデータ型です。 このデータ型にはさまざまな用途があります。 arraylisthash tabledictionarycollectionなどとして扱うことができます。 さらに、PHPの配列値は他の配列にすることもできるため、多次元配列が可能です。

インデックス付き配列

最も単純な形式では、配列には数値インデックスまたはkeyがあります。 キーを指定しない場合、PHPは自動的に次の数字キーを生成します。 デフォルトでは、配列キーは0インデックスです。つまり、最初のキーは1ではなく0です。 配列内にある各要素または値は、itemと呼ばれることもあります。

配列は、2つの方法のいずれかで定義できます。 1つ目は、array()言語構造を使用することです。これは、項目のコンマ区切りリストを使用します。 整数の配列は次のように定義されます。

array(-3, -2, -1, 0, 1, 2, 3)

配列を定義する2番目のより一般的な方法は、角括弧[]を使用した短い配列構文を使用することです。 フロートの配列は次のように定義されます。

[3.14, 9.23, 111.11, 312.12, 1.05]

次のように、文字列の配列を定義し、変数に配列を割り当てることもできます。

$sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp'];

ここでも、echoを使用して配列全体を出力することはできませんが、var_exportまたはvar_dumpを使用することはできます。

var_export($sea_creatures);
var_dump($sea_creatures);

出力は、配列が数値keysを使用していることを示しています。

Outputarray (
  0 => 'shark',
  1 => 'cuttlefish',
  2 => 'squid',
  3 => 'mantis shrimp',
)
array(4) {
  [0]=>
  string(5) "shark"
  [1]=>
  string(10) "cuttlefish"
  [2]=>
  string(5) "squid"
  [3]=>
  string(13) "mantis shrimp"
}

配列は0インデックスであるため、var_dumpは、03の間に数値キーを持つインデックス付き配列を示します。 各数値keyは、文字列valueに対応します。 最初の要素のキーは0で、値はsharkです。 var_dump関数は、配列に関する詳細を提供します。配列には4つの項目があり、最初の項目の値は5の長さの文字列です。

インデックス付き配列のテンキーは、値を設定するときに指定できます。 ただし、名前付きキーを使用する場合は、キーがより一般的に指定されます。

連想配列

連想配列は、名前付きキーを持つ配列です。 これらは通常、IDに含まれる情報など、関連するデータを保持するために使用されます。 連想配列は次のようになります。

['name' => 'Sammy', 'animal' => 'shark', 'color' => 'blue', 'location' => 'ocean']

文字列を区切るために使用される二重矢印演算子=>に注意してください。 =>の左側の単語がキーです。 キーは整数または文字列のいずれかです。 前のアレイのキーは、'name''animal''color''location'です。

=>の右側の単語が値です。 値は、別の配列を含む任意のデータ型で構成できます。 前の配列の値は、'Sammy''shark''blue''ocean'です。

インデックス付き配列と同様に、連想配列を変数内に格納し、詳細を出力しましょう。

$sammy = ['name' => 'Sammy', 'animal' => 'shark', 'color' => 'blue', 'location' => 'ocean'];
var_dump($sammy);

結果は、この配列が4つの要素を持つことを示しています。 各キーの文字列が指定されていますが、値のみがタイプstringと文字数を指定しています。

Outputarray(4) {
  ["name"]=>
  string(5) "Sammy"
  ["animal"]=>
  string(5) "shark"
  ["color"]=>
  string(4) "blue"
  ["location"]=>
  string(5) "ocean"
}

連想配列を使用すると、単一の要素にさらに正確にアクセスできます。 サミーの色を分離したい場合は、配列変数の後にキーの名前を含む角かっこを追加することで分離できます。

echo $sammy['color'];

結果の出力:

Outputblue

配列はデータを格納するためのキーと値のマッピングを提供するため、PHPプログラムの重要な要素になる可能性があります。

定数

定数は実際には個別のデータ型ではありませんが、他のデータ型とは動作が異なります。 名前が示すように、定数は一度宣言された変数であり、その後はアプリケーション全体で変更されません。 定数の名前は常に大文字で、ドル記号で始まらないようにする必要があります。 定数は、define関数またはconstキーワードのいずれかを使用して宣言できます。

define('MIN_VALUE', 1);
const MAX_VALUE = 10;

define関数は2つのパラメーターを取ります。1つは定数の名前を含むstringで、2つ目は割り当てる値です。 これは、前に説明したデータ型の値のいずれかである可能性があります。 constキーワードを使用すると、単一の等号を使用して、他のデータ型と同じ方法で定数に値を割り当てることができます。 定数は、二重引用符で囲まれた文字列内で解釈されないことを除いて、他の変数と同じ方法でアプリケーション内で使用できます。

echo "The value must be between MIN_VALUE and MAX_VALUE";
echo "The value must be between ".MIN_VALUE." and ".MAX_VALUE;

定数が解釈されないため、これらの行の出力は異なります。

OutputThe value must be between MIN_VALUE and MAX_VALUE
The value must be between 1 and 10

結論

この時点で、PHPで使用できる主要なデータ型のいくつかをよりよく理解する必要があります。 これらの各データ型は、PHP言語でプログラミングプロジェクトを開発するときに重要になります。