PHPの配列から要素を削除する


2515

PHPを使用して配列から要素を削除する簡単な方法はありforeach ($array)ますか?

に設定するnullとうまくいくと思いましたが、どうやら上手くいきません。


14
コンラッドの答えが、述べられた問題に対する最も単純なものであるとは思いません。unset()配列の反復により、削除された値は含まれなくなります。ではなく、OP :) - OTOH、実際に、私が探していた答えだった、スティーヴンの答えは十分であることは事実であると
brandizzi

32
@danipマニュアルで見つけやすいからといって、StackOverflowに関する質問を排除するものではありません。質問が重複する StackOverflowの質問である場合、それはここに属していない可能性があります。StackOverflowは、マニュアルを見る前でも、頼りになる選択肢として回答を見つけるのに適した場所です。
Dan Nissenbaum、2014

5
@unset($ array [$ key]); $ array = array_values($ array);
2014

foreachループでこれを削除する方法について関連質問:stackoverflow.com/questions/1949259/...
レゴラス

配列の配列(連想配列)からキーを削除する場合は、stackoverflow.com
a / 47978980/1045444の

回答:


2873

配列要素を削除する方法はいくつかありますが、特定のタスクには他のタスクよりも便利なものがあります。

配列要素を1つ削除する

配列要素を1つだけ削除する場合はunset()、代わりに使用できます\array_splice()

また、値があり、要素を削除するためのキーがわからない場合は\array_search()、キーを取得するために使用できます。

unset()

unset()配列キーを使用する場合、変更/再インデックスは行われません。キーのインデックスを再作成したい場合は、\array_values()その後unset()にすべてのキーを0から始まる数値の列挙キーに変換します。

コード

<?php

    $array = [0 => "a", 1 => "b", 2 => "c"];
    unset($array[1]);
                //↑ Key which you want to delete

?>

出力

[
    [0] => a
    [2] => c
]

\array_splice() 方法

\array_splice()キーを使用すると、キーのインデックスが自動的に再作成されますが、\array_values()すべてのキーが数値キーに変換されるのとは対照的に、連想キーは変更されません。

\array_splice()キーではなくオフセットも必要です!2番目のパラメーターとして。

コード

<?php

    $array = [0 => "a", 1 => "b", 2 => "c"];
    \array_splice($array, 1, 1);
                        //↑ Offset which you want to delete

?>

出力

[
    [0] => a
    [1] => c
]

array_splice() と同じ unset()配列を参照で取得するのです。これは、これらの関数の戻り値を配列に割り当てたくないことを意味します。

複数の配列要素を削除する

あなたが複数の配列要素を削除するとコールしたくない場合unset()\array_splice()、複数回あなたは、関数を使用することができます\array_diff()または\array_diff_key()あなたが値または削除する要素のキーを知っている場合に応じて。

\array_diff() 方法

削除する配列要素の値がわかっている場合は、を使用できます\array_diff()。以前と同じようにunset()、配列のキーは変更/再インデックスされません。

コード

<?php

    $array = [0 => "a", 1 => "b", 2 => "c"];
    $array = \array_diff($array, ["a", "c"]);
                               //└────────┘→ Array values which you want to delete

?>

出力

[
    [1] => b
]

\array_diff_key() 方法

削除する要素のキーがわかっている場合は、を使用します\array_diff_key()。ここでは、値としてではなく、2番目のパラメーターのキーとしてキーを渡すことを確認する必要があります。それ以外の場合は、配列を反転させる必要があります\array_flip()。また、ここではキーは変更/再インデックスされません。

コード

<?php

    $array = [0 => "a", 1 => "b", 2 => "c"];
    $array = \array_diff_key($array, [0 => "xy", "2" => "xy"]);
                                    //↑           ↑ Array keys which you want to delete
?>

出力

[
    [1] => b
]

また、同じ値を持つ複数の要素を使用unset()または\array_splice()削除する場合は\array_keys()、特定の値のすべてのキーを取得してからすべての要素を削除するために使用できます。


25
@AlexandruRadaいいえ、「これを使用しないでください」と言っていましたが、それは単なるナンセンスです。配列をそれを辞書として扱う場合、このメソッドを安全に使用できます。連続する数値インデックスを期待している場合にのみ、何か他のものを使用する必要があります。
Konrad Rudolph

2
array_splice他の回答で説明されている@Alexander Use 。
Konrad Rudolph

1
@AlexandruRada 結果からあなたがする必要があるarray (3) { [0]=>int(0) ...ときにあなたが持つことができる方法はありません(それはおそらくタイプミスunset($x[2])$x = array(1, 2, 3, 4);var_dump($x); // array(3) { [0]=> int(1) [1]=> int(2) [3]=> int(4) }
でした

5
unset複数の引数を持つことができます:void unset ( mixed $var [, mixed $... ] )
КонстантинВан

3
array_filterも実行可能なメソッドです。配列を変更したくない場合は特に便利ですが、json_encodeの問題である可能性のある再インデックスも行いません。php.net/manual/en/function.json-encode.php#94157
dotnetCarpenter

1358

ことに留意すべきであるunset()文字列のインデックス(ハッシュテーブルとして配列)を使用しているとき、あなたが期待するものである、手つかずのインデックスを保持しますが、整数インデックス付きの配列を扱うときに全く驚くべきことができます。

$array = array(0, 1, 2, 3);
unset($array[2]);
var_dump($array);
/* array(3) {
  [0]=>
  int(0)
  [1]=>
  int(1)
  [3]=>
  int(3)
} */

$array = array(0, 1, 2, 3);
array_splice($array, 2, 1);
var_dump($array);
/* array(3) {
  [0]=>
  int(0)
  [1]=>
  int(1)
  [2]=>
  int(3)
} */

したがってarray_splice()、整数キーを正規化する場合に使用できます。別のオプションはarray_values()after を使用していunset()ます:

$array = array(0, 1, 2, 3);

unset($array[2]);
$array = array_values($array);
var_dump($array);
/* array(3) {
  [0]=>
  int(0)
  [1]=>
  int(1)
  [2]=>
  int(3)
} */

42
それのあなたがarray_splice()を使用しているときは、OFFSET、ないキーを知っている必要があることは注目に値するが、オフセットどんな要素を削除したい(!)
トム・

18
@Tom:通常の配列(継続的に整数インデックスが付けられる)の場合、オフセットはインデックスです。それはarray_splice(他の中で)理にかなっている場所です。
Stefan Gehrig

5
もちろんありますが、スプライスを使用する前にアレイを改ざんした場合に覚えておくべきこと
Tom

4
巨大な配列から1トンの要素を削除するという基本的なテストから、array_spliceの方がはるかに高速でメモリをあまり必要としないようです。これは私が期待するものと一致します。array_values()は配列のコピーを作成しているようですが、array_spliceは適切に機能します。
Doug Kavendek 14

4
array_valuesは、ループ内の要素を削除していて、インデックスに一貫性を持たせたいが、ループ後にそれらを圧縮したい場合に便利なアプローチです。
Rorrik

370
  // Our initial array
  $arr = array("blue", "green", "red", "yellow", "green", "orange", "yellow", "indigo", "red");
  print_r($arr);

  // Remove the elements who's values are yellow or red
  $arr = array_diff($arr, array("yellow", "red"));
  print_r($arr);

これは上のコードからの出力です:

Array
(
    [0] => blue
    [1] => green
    [2] => red
    [3] => yellow
    [4] => green
    [5] => orange
    [6] => yellow
    [7] => indigo
    [8] => red
)

Array
(
    [0] => blue
    [1] => green
    [4] => green
    [5] => orange
    [7] => indigo
)

これで、array_values()は数値配列のインデックスを適切に再作成しますが、配列からすべてのキー文字列を削除し、それらを数値に置き換えます。キー名(文字列)を保持する必要がある場合、またはすべてのキーが数値の場合は配列のインデックスを再作成する必要がある場合は、array_merge()を使用します。

$arr = array_merge(array_diff($arr, array("yellow", "red")));
print_r($arr);

アウトプット

Array
(
    [0] => blue
    [1] => green
    [2] => green
    [3] => orange
    [4] => indigo
)

$ get_merged_values = array_merge($ data ['res']、$ data ['check_res']); これを印刷すると、print_r($ get_merged_values); 以下を表示します。配列([0] =>配列([menu_code] => 2 [menu_name] => Plant [menu_order_no] => 1)[1] =>配列([menu_code] => 3 [menu_name] => Line [menu_order_no] => 2))ただし、$ get_merged_values [0] [menu_code]、$ get_merged_values [0 ] [メニュー名]。これを行う方法を教えてください。
心臓ハッカー

203
$key = array_search($needle, $array);
if ($key !== false) {
    unset($array[$key]);
}

4
キーではなく値がわかっている場合に、この回答が要素を削除するためのものであることを明確にするとよいでしょう。値の最初のインスタンスのみが削除されることに注意してください。見つけるために、すべての値のためのキーを、使用array_keys
ToolmakerSteve


65

すべての値が一意である(または一意ではないが特定の値のすべてのインスタンスを削除したい)数値でインデックス付けされた配列がある場合、次のように、array_diff()を使用して一致する要素を削除できます。

$my_array = array_diff($my_array, array('Value_to_remove'));

例えば:

$my_array = array('Andy', 'Bertha', 'Charles', 'Diana');
echo sizeof($my_array) . "\n";
$my_array = array_diff($my_array, array('Charles'));
echo sizeof($my_array);

以下が表示されます。

4
3

この例では、サイズが「Charles」の要素が削除されます。これは、初期配列のサイズが4で、削除後は3と報告されるsizeof()呼び出しで確認できます。


64

また、名前付き要素の場合:

unset($array["elementName"]);

$a = array("A"=>1, "B"=>2, "C"=>"a"); print_r($a); unset($a["B"]); print_r($a);Array ( [A] => 1 [B] => 2 [C] => a ), Array ( [A] => 1 [C] => a )
Gives

文字列でインデックス付けされた配列要素を設定解除できないようです(「致命的エラー:文字列オフセットを設定解除できません」が生成されます)。私はこれが常にそうだったとは思いませんが、確かにPHP 5.3.10以降、おそらくそれ以前のバージョン
carpii

6
@carpii PHPは、連想配列から要素を設定解除できます。致命的なエラーは、配列ではなく文字列に対してunset($ var ['key'])を使用しようとすると発生します。例:$ array = array( 'test' => 'value'、 'another' => '値 '、); unset($ array ['test']); //期待どおりに配列から「test」要素を削除$ array = 'test'; unset($ array ['test']); //予想どおり「致命的エラー:文字列オフセットを設定解除できません」をスローします
Jimbo

ここでは、キー名を知っておく必要があります。それが優れています。stackoverflow.com
Nabi KAZ

33

配列の単一の要素を破棄します

unset()

$array1 = array('A', 'B', 'C', 'D', 'E');
unset($array1[2]); // Delete known index(2) value from array
var_dump($array1);

出力は次のようになります。

array(4) {
  [0]=>
  string(1) "A"
  [1]=>
  string(1) "B"
  [3]=>
  string(1) "D"
  [4]=>
  string(1) "E"
}

配列のインデックスを再作成する必要がある場合:

$array1 = array_values($array1);
var_dump($array1);

次に、出力は次のようになります。

array(4) {
  [0]=>
  string(1) "A"
  [1]=>
  string(1) "B"
  [2]=>
  string(1) "D"
  [3]=>
  string(1) "E"
}

配列の最後から要素をポップします -削除された要素の値を返します

mixed array_pop(array &$array)

$stack = array("orange", "banana", "apple", "raspberry");
$last_fruit = array_pop($stack);
print_r($stack);
print_r('Last Fruit:'.$last_fruit); // Last element of the array

出力は

Array
(
    [0] => orange
    [1] => banana
    [2] => apple
)
Last Fruit: raspberry

配列から最初の要素(赤)を削除します-削除された要素の値を返します

mixed array_shift ( array &$array )

$color = array("a" => "red", "b" => "green" , "c" => "blue");
$first_color = array_shift($color);
print_r ($color);
print_r ('First Color: '.$first_color);

出力は次のようになります。

Array
(
    [b] => green
    [c] => blue
)
First Color: red

1
array_shift再インデックスキーアイテム、それの整数であれば、それの悪いので、あなたはこの使用できるように:stackoverflow.com/a/52826684/1407491
ナビKAZ

33
<?php
    $stack = ["fruit1", "fruit2", "fruit3", "fruit4"];
    $fruit = array_shift($stack);
    print_r($stack);

    echo $fruit;
?>

出力:

[
    [0] => fruit2
    [1] => fruit3
    [2] => fruit4
]

fruit1

14
array_shift削除できるのは配列の最初の要素のみであることに注意してください。同様array_popに、配列の最後の要素を削除するために使用します。
Jasir 2014

1
回答は配列の最初の要素にのみ適用され、一般的な質問には回答しません。
sweisgerber.dev 2014年

@sebweisgerberあなたは正しいですが、私はそれが間違ったansだとは思わず、このansに反対票を投じる必要があります。問題は、どの位置にも言及していない要素を削除することです。
Saurabh Chandra Patel 2014

27

検索を回避するために、以下を試してみてくださいarray_diff

$array = array(3, 9, 11, 20);
$array = array_diff($array, array(11) ); // removes 11

この場合、キーを検索/使用する必要はありません。


21

配列内の複数の値を削除する必要があり、その配列内のエントリがオブジェクトまたは構造化データである場合[array_filter][1]は、最善の方法です。コールバック関数からtrueを返すエントリは保持されます。

$array = [
    ['x'=>1,'y'=>2,'z'=>3], 
    ['x'=>2,'y'=>4,'z'=>6], 
    ['x'=>3,'y'=>6,'z'=>9]
];

$results = array_filter($array, function($value) {
    return $value['x'] > 2; 
}); //=> [['x'=>3,'y'=>6,z=>'9']]

20

連想配列

連想配列の場合は、次を使用しますunset

$arr = array('a' => 1, 'b' => 2, 'c' => 3);
unset($arr['b']);

// RESULT: array('a' => 1, 'c' => 3)

数値配列

数値配列の場合は、次を使用しますarray_splice

$arr = array(1, 2, 3);
array_splice($arr, 1, 1);

// RESULT: array(0 => 1, 1 => 3)

注意

unset数値配列に使用してもエラーは発生しませんが、インデックスがめちゃくちゃになります。

$arr = array(1, 2, 3);
unset($arr[1]);

// RESULT: array(0 => 1, 2 => 3)

19

連想配列から複数の要素を削除する必要がある場合は、array_diff_key()を使用できます(ここではarray_flip()で使用されます)。

$my_array = array(
  "key1" => "value 1",
  "key2" => "value 2",
  "key3" => "value 3",
  "key4" => "value 4",
  "key5" => "value 5",
);

$to_remove = array("key2", "key4");

$result = array_diff_key($my_array, array_flip($to_remove));

print_r($result);

出力:

Array ( [key1] => value 1 [key3] => value 3 [key5] => value 5 ) 

なぜこれがそれほど過小評価されているのですか?
Fr0zenFyr

19

unset() 指定された変数を破棄します。

unset()関数内の動作は、破棄しようとしている変数のタイプによって異なります。

グローバル化された変数がunset()関数内にある場合、ローカル変数のみが破棄されます。呼び出し環境の変数は、呼び出される前と同じ値を保持しますunset()

<?php
    function destroy_foo()
    {
        global $foo;
        unset($foo);
    }

    $foo = 'bar';
    destroy_foo();
    echo $foo;
?>

上記のコードの答えはバーになります

unset()機能のグローバル変数の内部:

<?php
    function foo()
    {
        unset($GLOBALS['bar']);
    }

    $bar = "something";
    foo();
?>

17
// Remove by value
function removeFromArr($arr, $val)
{
    unset($arr[array_search($val, $arr)]);
    return array_values($arr);
}

12

インデックスが指定されている場合:

$arr = ['a', 'b', 'c'];
$index = 0;    
unset($arr[$index]);  // $arr = ['b', 'c']

インデックスが指定されていない場合:

$arr = ['a', 'b', 'c'];
$index = array_search('a', $arr); // search the value to find index
if($index !== false){
   unset($arr[$index]);  // $arr = ['b', 'c']
}

if場合ので、条件が必要ですindexが見つかりません、unset()自動的に私たちが望むものではない配列の最初の要素を削除します


1
値が見つからない場合は、最初の要素が削除されます。未設定のテストを追加:if($ index!== false)unset($ arr [$ index]);
MyRealNameIsBlaze

@MyRealNameIsBlazeありがとう、修正済み
Ahmad Mobaraki

9

ソリューション:

  1. 1つの要素を削除するには、unset()を使用します。
unset($array[3]);
unset($array['foo']);
  1. 連続していない複数の要素を削除するには、unset()も使用します。
unset($array[3], $array[5]);
unset($array['foo'], $array['bar']);
  1. 複数の隣接する要素を削除するには、array_splice()を使用します。
array_splice($array, $offset, $length);

詳細説明:

これらの関数を使用すると、これらの要素へのすべての参照がPHPから削除されます。配列にキーを保持したいが、値が空の場合は、要素に空の文字列を割り当てます。

$array[3] = $array['foo'] = '';

構文の他に、unset()の使用と要素への ''の割り当てには論理的な違いがあります。最初は言うThis doesn't exist anymore,が、2番目は言うThis still exists, but its value is the empty string.

数値を扱う場合は、0を割り当てるのがより良い方法です。したがって、会社がモデルXL1000スプロケットの生産を停止した場合、在庫は次のように更新されます。

unset($products['XL1000']);

ただし、XL1000スプロケットが一時的に不足していて、今週後半にプラントから新しい出荷を受け取る予定だった場合、これはより良い方法です。

$products['XL1000'] = 0;

要素をunset()すると、ループが引き続き正しく機能するように、PHPが配列を調整します。不足している穴を埋めるために配列を圧縮することはありません。これは、配列が数値のように見える場合でも、すべての配列が結合的であると私たちが言うときの意味です。次に例を示します。

// Create a "numeric" array
$animals = array('ant', 'bee', 'cat', 'dog', 'elk', 'fox');
print $animals[1];  // Prints 'bee'
print $animals[2];  // Prints 'cat'
count($animals);    // Returns 6

// unset()
unset($animals[1]); // Removes element $animals[1] = 'bee'
print $animals[1];  // Prints '' and throws an E_NOTICE error
print $animals[2];  // Still prints 'cat'
count($animals);    // Returns 5, even though $array[5] is 'fox'

// Add a new element
$animals[ ] = 'gnu'; // Add a new element (not Unix)
print $animals[1];  // Prints '', still empty
print $animals[6];  // Prints 'gnu', this is where 'gnu' ended up
count($animals);    // Returns 6

// Assign ''
$animals[2] = '';   // Zero out value
print $animals[2];  // Prints ''
count($animals);    // Returns 6, count does not decrease

配列を密に埋められた数値配列に圧縮するには、array_values()を使用します。

$animals = array_values($animals);

または、array_splice()は自動的に配列のインデックスを再作成して、穴を残さないようにします。

// Create a "numeric" array
$animals = array('ant', 'bee', 'cat', 'dog', 'elk', 'fox');
array_splice($animals, 2, 2);
print_r($animals);
Array
(
    [0] => ant
    [1] => bee
    [2] => elk
    [3] => fox
)

これは、配列をキューとして使用していて、ランダムアクセスを許可しながらキューから項目を削除する場合に便利です。配列から最初または最後の要素を安全に削除するには、それぞれarray_shift()およびarray_pop()を使用します。


8

次の配列があるとします。

Array
(
    [user_id] => 193
    [storage] => 5
)

を削除するstorageには、次の操作を行います。

unset($attributes['storage']);
$attributes = array_filter($attributes);

そしてあなたは得る:

Array
(
    [user_id] => 193
)

何にarray_filter使用されますか?
David

偽の要素を削除する
Tebe

8

可変属性を持つ特定のオブジェクトがあると言いたいだけです(基本的にはテーブルをマッピングしていて、テーブルの列を変更していたため、テーブルを反映するオブジェクトの属性も変化しました)。

class obj {
    protected $fields = array('field1','field2');
    protected $field1 = array();
    protected $field2 = array();
    protected loadfields(){}
    // This will load the $field1 and $field2 with rows of data for the column they describe
    protected function clearFields($num){
        foreach($fields as $field) {
            unset($this->$field[$num]);
            // This did not work the line below worked
            unset($this->{$field}[$num]); // You have to resolve $field first using {}
        }
    }
}

の全体的な目的$fieldsは正しかったので、コードが変更されたときにコード内のあらゆる場所を見る必要はありません。クラスの先頭を見て、属性のリストと$ fields配列の内容を変更して新しい属性。


8

デフォルトの機能に従います。

私)

$Array = array("test1", "test2", "test3", "test3");

unset($Array[2]);

ii)

$Array = array("test1", "test2", "test3", "test3");

array_pop($Array);

iii)

$Array = array("test1", "test2", "test3", "test3");

array_splice($Array,1,2);

iv)

$Array = array("test1", "test2", "test3", "test3");

array_shift($Array);

7
<?php
    $array = array("your array");
    $array = array_diff($array, ["element you want to delete"]);
?>

変数に配列を作成してから、$array「削除したい要素」を配置した場所に、「a」のようなものを配置します。複数のアイテムを削除する場合は、「a」、「b」を使用します。


7

array_searchを使用してキーを取得し、見つかった場合はunsetで削除します。

if (($key = array_search('word', $array)) !== false) {
    unset($array[$key]);
}

6

配列からの複数の断片化された要素のunset()

一方でunset()、ここ数回言及されています、それはその言及しなければまだunset()1回の操作で、アレイから削除複数の非連続の要素に簡単にそれを作る複数の変数を受け付けます。

// Delete multiple, noncontiguous elements from an array
$array = [ 'foo', 'bar', 'baz', 'quz' ];
unset( $array[2], $array[3] );
print_r($array);
// Output: [ 'foo', 'bar' ]

unset()を動的に

unset()は削除するキーの配列を受け入れないため、以下のコードは失敗します(ただし、unset()を動的に使用する方が少し簡単になります)。

$array = range(0,5);
$remove = [1,2];
$array = unset( $remove ); // FAILS: "unexpected 'unset'"
print_r($array);

代わりに、unset()をforeachループで動的に使用できます。

$array = range(0,5);
$remove = [1,2];
foreach ($remove as $k=>$v) {
    unset($array[$v]);
}
print_r($array);
// Output: [ 0, 3, 4, 5 ]

配列をコピーして配列キーを削除します

まだ言及されていない別の慣行もあります。特定の配列キーを削除する最も簡単な方法は、単に$ array1を$ array2にコピーすることです。

$array1 = range(1,10);
foreach ($array1 as $v) {
    // Remove all even integers from the array
    if( $v % 2 ) {
        $array2[] = $v;
    }
}
print_r($array2);
// Output: [ 1, 3, 5, 7, 9 ];

もちろん、同じ方法がテキスト文字列にも当てはまります。

$array1 = [ 'foo', '_bar', 'baz' ];
foreach ($array1 as $v) {
    // Remove all strings beginning with underscore
    if( strpos($v,'_')===false ) {
        $array2[] = $v;
    }
}
print_r($array2);
// Output: [ 'foo', 'baz' ]

6

キーに基づいて配列要素を削除します。

unset以下のような関数を使用します。

$a = array(
       'salam',
       '10',
       1
);

unset($a[1]);

print_r($a);

/*

    Output:

        Array
        (
            [0] => salam
            [2] => 1
        )

*/

値に基づいて配列要素を削除します。

array_search関数を使用して要素キーを取得し、上記の方法を使用して以下のような配列要素を削除します。

$a = array(
       'salam',
       '10',
       1
);

$key = array_search(10, $a);

if ($key !== false) {
    unset($a[$key]);
}

print_r($a);

/*

    Output:

        Array
        (
            [0] => salam
            [2] => 1
        )

*/

6

インデックスの順序を維持しながら配列の最初の項目を削除する2つの方法と、最初の項目のキー名がわからない場合。

ソリューション#1

// 1 is the index of the first object to get
// NULL to get everything until the end
// true to preserve keys
$array = array_slice($array, 1, null, true);

ソリューション#2

// Rewinds the array's internal pointer to the first element
// and returns the value of the first array element.
$value = reset($array);
// Returns the index element of the current array position
$key = key($array);
unset($array[$key]);

このサンプルデータの場合:

$array = array(10 => "a", 20 => "b", 30 => "c");

この結果が必要です:

array(2) {
  [20]=>
  string(1) "b"
  [30]=>
  string(1) "c"
}

5

次のコードを使用します。

$arr = array('orange', 'banana', 'apple', 'raspberry');
$result = array_pop($arr);
print_r($result);

4
php5:単に実行array_pop($arr)すると、最後のエントリが削除されます。`=`は必要ありません。
Chris K

5
<?php
    // If you want to remove a particular array element use this method
    $my_array = array("key1"=>"value 1", "key2"=>"value 2", "key3"=>"value 3");

    print_r($my_array);
    if (array_key_exists("key1", $my_array)) {
        unset($my_array['key1']);
        print_r($my_array);
    }
    else {
        echo "Key does not exist";
    }
?>

<?php
    //To remove first array element
    $my_array = array("key1"=>"value 1", "key2"=>"value 2", "key3"=>"value 3");
    print_r($my_array);
    $new_array = array_slice($my_array, 1);
    print_r($new_array);
?>


<?php
    echo "<br/>    ";
    // To remove first array element to length
    // starts from first and remove two element
    $my_array = array("key1"=>"value 1", "key2"=>"value 2", "key3"=>"value 3");
    print_r($my_array);
    $new_array = array_slice($my_array, 1, 2);
    print_r($new_array);
?>

出力

 Array ( [key1] => value 1 [key2] => value 2 [key3] =>
 value 3 ) Array (    [key2] => value 2 [key3] => value 3 )
 Array ( [key1] => value 1 [key2] => value 2 [key3] => value 3 )
 Array ( [key2] => value 2 [key3] => value 3 )
 Array ( [key1] => value 1 [key2] => value 2 [key3] => value 3 )
 Array ( [key2] => value 2 [key3] => value 3 )

4

非整数キーを使用した連想配列の場合:

単に、 unset($array[$key])うまくいくでしょう。

整数キーを持つ配列で、キーを維持したい場合:

  1. $array = [ 'mango', 'red', 'orange', 'grapes'];

    unset($array[2]);
    $array = array_values($array);
  2. array_splice($array, 2, 1);


2

これは役立つかもしれません...

<?php
    $a1 = array("a"=>"red", "b"=>"green", "c"=>"blue", "d"=>"yellow");
    $a2 = array("a"=>"purple", "b"=>"orange");
    array_splice($a1, 0, 2, $a2);
    print_r($a1);
?>

結果は次のようになります。

Array ( [0] => purple [1] => orange [c] => blue [d] => yellow )

2
$arrayName = array( '1' => 'somevalue',
                    '2' => 'somevalue1',
                    '3' => 'somevalue3',
                  );

print_r($arrayName[1]);
// somevalue
unset($arrayName[1]);

print_r($arrayName);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.