現在の言語: 日本語

戻る

配列の追加(2)
配列関連

phpの配列の追加について
初期化/クリア
$ary = [];//初期値が空
$ary = [1, 2, 3];//初期値を設定する

解放(循環参照は、参照元を先に解放する必要があります。)
$ary = null;
unset($ary);

配列に使う+演算子は、右側の配列の要素を左側の配列に追加しますが、
キーが重複する場合は左側の値が優先されます。



[サンプル]

copy
class test1
{
	function test1()
	{
		$ary1=[
		"str"=>"aaa",
		"num"=>100
		];
		$ary2=[
		"str"=>"bbb",
		"num"=>200
		];
		$ary3 = $ary1 + $ary2;
		$this->foreachArray($ary3);
/*
key:str value:aaa
key:num value:100
*/
echo "------------------".PHP_EOL;
	}
	function test2()
	{
		$ary1=[
		"str"=>"aaa",
		"num"=>100
		];
		$ary2=[
		"str"=>"bbb",
		"str2"=>"bbb",
		"num"=>200,
		"num2"=>300
		];
		$ary3 = $ary1 + $ary2;
		$this->foreachArray($ary3);
/*
key:str value:aaa
key:num value:100
key:str2 value:bbb
key:num2 value:300
*/
echo "------------------".PHP_EOL;
	}
	function test3()
	{
		$ary1=[
		"str"=>"aaa",
		"num"=>100
		];
		$ary2=[
		"str"=>"bbb",
		"str2">="bbb"
		];
		$ary3 = $ary1 + $ary2;
		$this->foreachArray($ary3);
/*
key:str value:aaa
key:num value:100
key:0 value:1
*/
echo "------------------".PHP_EOL;
	}
	//foreachを使った配列を読み込む方法
	private function foreachArray(array $ary)
	{
		foreach ($ary as $key => $value) 
		{
			echo "key:".$key . ' value:' . $value . PHP_EOL;
		}
	}
}
echo "<pre>";
$cls1= new test1();
$cls1->test1();
$cls1->test2();
$cls1->test3();
echo "</pre>";
copy
class test1
{ 
	function test1() 
	{ 
		$ary1=[ 
		"str"=>"aaa", 
		"num"=>100 
		]; 
		$ary2=[ 
		"str"=>"bbb", 
		"num"=>200 
		]; 
		$ary3 = $ary1 + $ary2; 
		$this->foreachArray($ary3);
		/*
		key:str value:aaa
		key:num value:100
		*/
		echo "------------------".PHP_EOL; 
	} 
	function test2() 
	{ 
		$ary1=[ 
		"str"=>"aaa", 
		"num"=>100 
		]; 
		$ary2=[ 
		"str"=>"bbb", 
		"str2"=>"bbb", 
		"num"=>200, 
		"num2"=>300 
		]; 
		$ary3 = $ary1 + $ary2; $this->foreachArray($ary3);
		/*
		key:str value:aaa
		key:num value:100
		key:str2 value:bbb
		key:num2 value:300
		*/
		echo "------------------".PHP_EOL;
	}
	function test3()
	{
		$ary1=[
		"str"=>"aaa",
		"num"=>100
		];
		$ary2=[
		"str"=>"bbb",
		"str2">="bbb"
		];
		$ary3 = $ary1 + $ary2;
		$this->foreachArray($ary3);
		/*
		key:str value:aaa
		key:num value:100
		key:0 value:1
		*/
		echo "------------------".PHP_EOL;
	}
	//How to read an array using foreach
	private function foreachArray(array $ary)
	{
		foreach ($ary as $key => $value) 
	{ 
		echo "key:".$key . ' value:' . $value . PHP_EOL; 
	} 
}
}
echo "<pre>";
$cls1= new test1();
$cls1->test1();
$cls1->test2();
$cls1->test3();
echo "</pre>";

test1
test1は配列を+演算子を使用して追加する処理です。
左側の配列と右側の配列のキーが同じだったため
同じキーがあった場合は左側が優先されます。
test2

test2は左側にないキーと値が追加されます。

test3
test3は連想配列に構文エラーがあるケースです。
"num">=200
配列のキーと値のペアを示す=>演算子ではなく
比較演算子の>=になっています。
構文エラーにならないのは致命的な構文エラー(Fatal Syntax Error)であれば
完全に停止するのですが、
有効なPHPコードとして解釈され
有効な比較演算子として解釈してしまったためです。

「>= (以上)」を意味する比較演算子となります。
"str2" と "bbb" を比較すると、辞書順で "str2" の方が大きいため、この比較式は true となります。
PHPの true は数値の 1 として扱われます。
連想配列の要素に明示的なキー(=>の左側)がない場合は
PHPは自動的に数値キーを割り当てます。
最初の数値キーは0から始まる数字です。
PHPが実行解釈をした場合、trueの部分に対するキーが指定されていないため
自動的に0が割り振られてしまっているということになります。


戻る

著作権情報
ホームページおよプリ等に掲載されている情報等については、いかなる保障もいたしません。
ホームページおよびアプリ等を通じて入手したいかなる情報も複製、販売、出版または使用させたり、
または公開したりすることはできません。
当方は、ホームページおよびアプリ等を利用したいかなる理由によっての障害等が発生しても、
その結果ホームページおよびアプリ等を利用された本人または他の第三者が被った損害について
一切の責任を負わないものとします。