現在の言語: 日本語

戻る

多次元配列の要素削除
配列関連

多次元配列の要素削除
要素を削除する方法としてunsetがあります。
unset(配列[要素]);
配列の行を削除する
unset(配列[要素][要素]);
要素のデータを消す

[サンプル]

copy
class test1
{
	function test1():void
	{
		$ary =[
			[1,2,3],
			[4,5,6],
			[7,8,9],
		];
		var_dump($ary);
/*
array(3) {
  [0]=>
  array(3) {
    [0]=>
    int(1)
    [1]=>
    int(2)
    [2]=>
    int(3)
  }
  [1]=>
  array(3) {
    [0]=>
    int(4)
    [1]=>
    int(5)
    [2]=>
    int(6)
  }
  [2]=>
  array(3) {
    [0]=>
    int(7)
    [1]=>
    int(8)
    [2]=>
    int(9)
  }
}
*/
		for($i=0; $i<3; $i++)
		{
			for($j=0; $j<3; $j++)
			{
				//配列の要素の中身を削除
				//この状態では要素の中身だけを削除だけであり、行を削除したことにはなっていません
				if($i==1)
				{
					//unsetでは要素のインデックスは自動では詰められません
					unset($ary[$i][$j]);
				}
			}
		}
		var_dump($ary);
/*
array(3) {
  [0]=>
  array(3) {
    [0]=>
    int(1)
    [1]=>
    int(2)
    [2]=>
    int(3)
  }
  [1]=>
  array(0) {
  }
  [2]=>
  array(3) {
    [0]=>
    int(7)
    [1]=>
    int(8)
    [2]=>
    int(9)
  }
}
*/
		for($i=0; $i<3; $i++)
		{
			for($j=0; $j<3; $j++)
			{
				//配列の要素の中身を削除
				//この状態では要素の中身だけを削除だけであり、行を削除したことにはなっていません
				if($i==1)
				{
					//行データを削除したい場合は下記のように削除します
					unset($ary[$i]);
				}
			}
		}
		var_dump($ary);
/*
array(2) {
  [0]=>
  array(3) {
    [0]=>
    int(1)
    [1]=>
    int(2)
    [2]=>
    int(3)
  }
  [2]=>
  array(3) {
    [0]=>
    int(7)
    [1]=>
    int(8)
    [2]=>
    int(9)
  }
}
*/
		//番号を詰めたい場合: array_values($配列); を実行
		$ary = array_values($ary);
		var_dump($ary);
	}
	function test2():void
	{
		$ary = [
			"A" => [
				"A1" => [1,2,3],
				"A2" => [4,5,6]
			],
			"B" => [
				"B1" => [11,12,13],
				"B2" => [14,15,16]
			],
			"C" => [
				"C1" => [21,22,23],
				"C2" => [24,25,26]
			],
		];
		unset($ary["B"]["B1"]);
		unset($ary["B"]["B2"]);
		var_dump($ary);
/*
array(3) {
  ["A"]=>
  array(2) {
    ["A1"]=>
    array(3) {
      [0]=>
      int(1)
      [1]=>
      int(2)
      [2]=>
      int(3)
    }
    ["A2"]=>
    array(3) {
      [0]=>
      int(4)
      [1]=>
      int(5)
      [2]=>
      int(6)
    }
  }
  ["B"]=>
  array(0) {
  }
  ["C"]=>
  array(2) {
    ["C1"]=>
    array(3) {
      [0]=>
      int(21)
      [1]=>
      int(22)
      [2]=>
      int(23)
    }
    ["C2"]=>
    array(3) {
      [0]=>
      int(24)
      [1]=>
      int(25)
      [2]=>
      int(26)
    }
  }
}
*/
		//行を削除するケース
		unset($ary["B"]);
		//番号を詰めたい場合: array_values($配列); を実行
		$ary = array_values($ary);
		var_dump($ary);
/*
array(2) {
  [0]=>
  array(2) {
    ["A1"]=>
    array(3) {
      [0]=>
      int(1)
      [1]=>
      int(2)
      [2]=>
      int(3)
    }
    ["A2"]=>
    array(3) {
      [0]=>
      int(4)
      [1]=>
      int(5)
      [2]=>
      int(6)
    }
  }
  [1]=>
  array(2) {
    ["C1"]=>
    array(3) {
      [0]=>
      int(21)
      [1]=>
      int(22)
      [2]=>
      int(23)
    }
    ["C2"]=>
    array(3) {
      [0]=>
      int(24)
      [1]=>
      int(25)
      [2]=>
      int(26)
    }
  }
}
*/
	}
}
echo "<pre>";
$cls1= new test1();
$cls1->test1();
$cls1->test2();
echo "</pre>";
copy
class test1
{ 
	function test1():void 
	{ 
		$ary =[ 
		[1,2,3], 
		[4,5,6], 
		[7,8,9], 
		]; 
		var_dump($ary);
/*
array(3) { 
[0]=> 
array(3) { 
[0]=> 
int(1) 
[1]=> 
int(2) 
[2]=> 
int(3) 
} 
[1]=> 
array(3) { 
[0]=> 
int(4) 
[1]=> 
int(5) 
[2]=> 
int(6) 
} 
[2]=> 
array(3) { 
[0]=> 
int(7) 
[1]=> 
int(8) 
[2]=> 
int(9) 
}
}
*/ 
		for($i=0; $i<3; $i++) 
		{
			for($j=0; $j<3; $j++)
			{
				//Delete the contents of the array element.
				//In this state, only the contents of the element are deleted; the row is not actually deleted.
				if($i==1)
				{
					//Unset does not automatically fill the element index.
					unset($ary[$i][$j]);
				}
			}
		}
		var_dump($ary);
/*
array(3) {
[0]=>
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
[1]=>
array(0) {
}
[2]=>
array(3) {
[0]=>
int(7)
[1]=>
int(8)
[2]=>
int(9)
}
}
*/
		for($i=0; $i<3; $i++)
		{
			for($j=0; $j<3; $j++)
			{
				//Delete the contents of the array element.
				//At this stage, only the element contents are deleted; the row is not actually deleted.
				if($i==1)
				{
					//To delete row data, use the following:
					unset($ary[$i]);
				}
			}
		}
		var_dump($ary);
/*
array(2) {
[0]=>
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
[2]=>
array(3) {
[0]=>
int(7)
[1]=>
int(8)
[2]=>
int(9)
}
}
*/
		//To pad the numbers: Execute array_values($array);
		$ary = array_values($ary); 
		var_dump($ary); 
	} 
	function test2():void 
	{ 
		$ary = [ 
		"A" => [ 
		"A1" => [1,2,3], 
		"A2" => [4,5,6] 
		], 
		"B" => [ 
		"B1" => [11,12,13], 
		"B2" => [14,15,16] 
		], 
		"C" => [ 
		"C1" => [21,22,23], 
		"C2" => [24,25,26] 
		], 
		]; 
		unset($ary["B"]["B1"]); 
		unset($ary["B"]["B2"]); 
		var_dump($ary);
/*
array(3) { 
["A"]=> 
array(2) { ["A1"]=> 
array(3) { 
[0]=> 
int(1) 
[1]=> 
int(2) 
[2]=> 
int(3) 
} 
["A2"]=> 
array(3) { 
[0]=> 
int(4) 
[1]=> 
int(5) 
[2]=> 
int(6) 
} 
} 
["B"]=> 
array(0) { 
} 
["C"]=> 
array(2) { 
["C1"]=> 
array(3) { 
[0]=> 
int(21) 
[1]=> 
int(22) 
[2]=> 
int(23) 
} 
["C2"]=> 
array(3) { 
[0]=> 
int(24) 
[1]=> 
int(25) 
[2]=> int(26)
}
}
}
*/
		//To delete a row
		unset($ary["B"]);
		//To pad the numbers: Execute array_values($array);
		$ary = array_values($ary);
		var_dump($ary);
/*
array(2) {
[0]=>
array(2) {
["A1"]=>
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
["A2"]=>
array(3) {
[0]=>
int(4)
[1]=>
int(5)
[2]=>
int(6)
}
}
[1]=>
array(2) {
["C1"]=>
array(3) {
[0]=> 
int(21) 
[1]=> 
int(22) 
[2]=> 
int(23) 
} 
["C2"]=> 
array(3) { 
[0]=> 
int(24) 
[1]=> 
int(25) 
[2]=> 
int(26) 
} 
}
}
*/ 
	}
}
echo "<pre>";
$cls1= new test1();
$cls1->test1();
$cls1->test2();
echo "</pre>";
行を削除するケース
unset($ary[$i]);

連想配列の行を削除するケース
unset($ary["B"]);

array_values
内部インデックスを詰めたい場合に使用します。
この関数は配列の要素の中身を消しただけでは結果は変わりません。
行データを削除するような実行をした結果に対して内部インデックスをリナンバリングしてくれます。


戻る

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