配列配列
配列とは何ですか?配列は、同時に複数の値を保持できる特別な変数です。 PHP の配列は、実際には順序付けられたマップです。マップはキーに値を関連付けるタイプです。この型はさまざまな方法で最適化されているため、実数の配列、リスト (ベクトル)、ハッシュ テーブル (マップの実装)、ディクショナリ、セット、スタック、キューなどとして扱うことができます。さらなる可能性を。配列要素の値は別の配列にすることもできるため、ツリー構造や多次元配列も許可されます。
一般的に、定義方法は次のとおりです。
方法 1:
$a=array(1,2,4,5,6); <?php $array=array('a','b','c'); $array[]='simon'; print_r($array); ?>
実行結果は次のとおりです。
配列
(
[0]=>a
[1]=>b
[2]=>c
[3]=>simon
)
方法 2 :
$a=array(key1=>value1,key2=>value2,key3=>value3);
方法 3:
$a[key1]=value1; $a[key2]=value2;
方法 4: 角かっこ [] で配列を定義する
PHP バージョン 5.4 以降では、新しい配列略語構文を使用してこのように記述できます。
PHP バージョン 5.3 以前では、このような記述は受け入れられません...
$data = [ 'start_time' => '123', 'end_time' =>'456'];
これらの構造の説明はこのマニュアルの範囲を超えていますが、各構造に対して少なくとも 1 つの例が提供されます。これらの構造の詳細については、この広範なトピックに関する他の著作を参照することをお勧めします。
構文
配列の定義 array()
array() 言語構造を使用して、新しい配列を作成できます。カンマで区切られた任意の数のキー => 値のペアを受け入れます。
array( key => value , ... ) // 键(key)可是是一个整数 integer 或字符串 string // 值(value)可以是任意类型的值
配列の最後の要素の後のカンマは省略可能です。通常、array(1, 2, ) の代わりに array(1, 2) などの単一行の配列定義で使用されます。新しいセルを追加しやすくするために、複数行の配列定義の最後のカンマを残すのが一般的です。 5.4 以降、array() の代わりに [] を使用する短い配列定義構文を使用できるようになりました。
例 #1 単純な配列
<?php $array = array( "foo" => "bar", "bar" => "foo", ); // 自 PHP 5.4 起 $array = [ "foo" => "bar", "bar" => "foo", ]; ?>
key には、整数または文字列を指定できます。値は任意の型にすることができます。
さらに、キーには次の強制変換が行われます:
正当な整数値を含む文字列は整数型に変換されます。たとえば、キー名「8」は、実際には 8 として保存されます。ただし、「08」は有効な 10 進数値ではないため、キャストされません。
浮動小数点数も整数に変換されます。つまり、小数部分は四捨五入されます。たとえば、キー名 8.7 は、実際には 8 として保存されます。
ブール値も整数に変換されます。つまり、キー名 true は実際には 1 として格納され、キー名 false は 0 として格納されます。
Null は空の文字列に変換されます。つまり、キー名 null は実際には "" として格納されます。
配列やオブジェクトをキー名として使用することはできません。これを強制的に実行すると、「オフセット タイプが不正です」という警告が表示されます。
複数のユニットが配列定義で同じキー名を使用している場合、最後のものだけが使用され、前のものは上書きされます。
例 #2 型強制と上書きの例
<?php $array = array( 1 => "a", "1" => "b", 1.5 => "c", true => "d", ); var_dump($array); ?>
上記のルーチンは出力します:
array(1) { [1]=> string(1) "d" }
上記の例では、すべてのキー名が強制的に 1 に設定され、その後、新しい各ユニットが以前の値を上書きします。最後に残るのは「d」だけです。
PHP は実際にはインデックス付き配列と連想配列を区別しないため、PHP 配列には整数キー名と文字列キー名の両方を含めることができます。
指定された値にキーが指定されていない場合は、現在の最大の整数インデックス値が取得され、新しいキーはその値に 1 を加えたものになります。指定したキー名にすでに値が設定されている場合、その値は上書きされます。
例 #3 整数と文字列のキー名の混合
<?php $array = array( "foo" => "bar", "bar" => "foo", 100 => -100, -100 => 100, ); var_dump($array); ?>
上記のルーチンは次のように出力します:
array(4) {
["foo"]=>
string(3) "bar"
["bar"]=>
string(3) "foo"
[100]=>
int(-100)
[-100]=>
int(100)
}
キーはオプションです。指定しない場合、PHP は、以前に使用した最大の整数キーに 1 を加えたものを新しいキーとして自動的に使用します。
例 #4 キー名のないインデックス配列
<?php $array = array("foo", "bar", "hallo", "world"); var_dump($array); ?>
上記のルーチンは出力します:
array(4) {
[0]=>
string(3) "foo"
[1 ] =>
string(3) "bar"
[2]=>
string(5) "hallo"
[3]=>
string(5) "world"
}
一部のユニットのみにキー名を指定し、その他を空白のままにすることもできます:
例 #5 一部のユニットのみにキー名を指定する
<?php $array = array( "a", "b", 6 => "c", "d", ); var_dump($array); ?>
上記のルーチンは出力します:
array(4) {
[0] ]=>
文字列(1) "a"
[1]=>
文字列(1) "b"
[6]=>
文字列(1) "c"
[ 7]=>
string(1) "d"
}
最後の値 "d" にキー名 7 が自動的に割り当てられていることがわかります。これは、以前の最大の整数キーが 6 であったためです。
用方括号语法访问数组单元 ¶
数组单元可以通过 array[key] 语法来访问。
Example #6 访问数组单元
<?php $array = array( "foo" => "bar", 42 => 24, "multi" => array( "dimensional" => array( "array" => "foo" ) ) ); var_dump($array["foo"]); var_dump($array[42]); var_dump($array["multi"]["dimensional"]["array"]); ?>
以上例程会输出:
string(3) "bar"
int(24)
string(3) "foo"
Note:
方括号和花括号可以互换使用来访问数组单元(例如 $array[42] 和 $array{42} 在上例中效果相同)。
自 PHP 5.4 起可以用数组间接引用函数或方法调用的结果。之前只能通过一个临时变量。
自 PHP 5.5 起可以用数组间接引用一个数组原型。
Example #7 数组间接引用
<?php function getArray() { return array(1, 2, 3); } // on PHP 5.4 $secondElement = getArray()[1]; // previously $tmp = getArray(); $secondElement = $tmp[1]; // or list(, $secondElement) = getArray(); ?>
Note:
试图访问一个未定义的数组键名与访问任何未定义变量一样:会导致 E_NOTICE 级别错误信息,其结果为 NULL。
更多关于PHP数组的问题可以访问相关网站:http://www.php.cn/search/PHP数组.html
以上がPHP 配列定義のいくつかの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。