PHP: Usuń element z tablicy

Czy istnieje łatwy sposób na usunięcie elementu z tablicy za pomocą PHP, tak że foreach ($array) nie zawiera już tego elementu?

Myślałem, że ustawienie go na null da radę, ale najwyraźniej nie działa.

 2029
Author: Akintunde-Rotimi, 2008-12-15

30 answers

Istnieją różne sposoby usuwania elementu tablicy, gdzie niektóre z nich są bardziej przydatne do niektórych konkretnych zadań niż inne.

Usuń jeden element tablicy

Jeśli chcesz usunąć tylko jeden element tablicy możesz użyć unset() lub alternatywa array_splice().

Również jeśli masz wartość i nie znasz klucza do usunięcia elementu, którego możesz użyć array_search() PO klucz.

unset() metoda

Zauważ, że kiedy używasz unset() klawisze tablicy nie zmienią / reindex. Jeśli chcesz reindeksować klucze, możesz użyć array_values() po unset(), który skonwertuje wszystkie klucze na numeryczne wymienione klucze począwszy od 0.

Kod

<?php

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

?>

Wyjście

Array (
    [0] => a
    [2] => c
)

array_splice() metoda

Jeśli użyjesz array_splice() klucze będą automatycznie reindeksowane, ale klucze asocjacyjne Nie ulegną zmianie w przeciwieństwie do array_values(), które przekonwertują wszystkie klucze na klucze numeryczne.

Również array_splice() wymaga przesunięcia, nie klucz! jako drugi parametr.

Kod

<?php

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

?>

Wyjście

Array (
    [0] => a
    [1] => c
)

array_splice() podobnie jak unset() weź tablicę przez odniesienie, oznacza to, że nie chcesz przypisywać wartości zwracanych przez te funkcje z powrotem do tablicy.

Usuń wiele elementów tablicy

Jeśli chcesz usunąć wiele elementów tablicy i nie chcesz wywoływać unset() lub array_splice() wiele razy, możesz użyć funkcji array_diff() lub array_diff_key() w zależności od tego, czy znasz wartości lub klucze elementy, które chcesz usunąć.

array_diff() metoda

Jeśli znasz wartości elementów tablicy, które chcesz usunąć, możesz użyć array_diff(). Tak jak poprzednio z {[8] } nie zmieni/reindex kluczy tablicy.

Kod

<?php

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

?>

Wyjście

Array (
    [1] => b
)

array_diff_key() metoda

Jeśli znasz klucze elementów, które chcesz usunąć, to chcesz użyć array_diff_key(). Tutaj musisz upewnić się, że przekazujesz klucze jako klucze w drugim parametrze, a nie jako wartości. W przeciwnym razie musisz odwrócić tablicę za pomocą array_flip(). A także tutaj klucze nie zmienią się / reindex.

Kod

<?php

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

Wyjście

Array (
    [1] => b
)

Również jeśli chcesz użyć unset() lub array_splice() do usunięcia wielu elementów o tej samej wartości, których możesz użyć array_keys() aby uzyskać wszystkie klucze dla określonej wartości, a następnie usunąć wszystkie elementy.

 2300
Author: Rizier123,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-28 09:57:27

Należy zauważyć, że unset() będzie zachowywał indeksy nietknięte, czego można się spodziewać, używając indeksów łańcuchowych( tablica jako hashtable), ale może być dość zaskakujące, gdy mamy do czynienia z tablicami indeksowanymi liczbami całkowitymi:

$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)
} */

Więc array_splice() może być używany, jeśli chcesz znormalizować swoje klucze całkowite. Inną opcją jest użycie array_values() po 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)
} */
 1306
Author: Stefan Gehrig,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-13 17:32:09
  // 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);  

To jest wyjście z powyższego kodu:

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
)

Teraz array_values() będzie ładnie reindexować tablicę liczbową, ale usunie wszystkie łańcuchy klawiszy z tablicy i zastąpi je liczbami. Jeśli chcesz zachować nazwy kluczy (ciągi znaków) lub reindex tablicy, jeśli wszystkie klucze są numeryczne, użyj array_merge():

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

Wyjścia

Array
(
    [0] => blue
    [1] => green
    [2] => green
    [3] => orange
    [4] => indigo
)
 323
Author: Marcel Cozma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-19 19:12:54
$key = array_search($needle,$array);
if($key!==false){
    unset($array[$key]);
}
 177
Author: liamvictor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-03 10:50:11
unset($array[$index]);
 62
Author: Eran Galperin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-15 20:31:31

Jeśli masz numerycznie indeksowaną tablicę, gdzie wszystkie wartości są unikalne (lub nie są unikalne, ale chcesz usunąć wszystkie instancje określonej wartości), możesz po prostu użyć array_diff (), aby usunąć pasujący element, jak to:

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

Na przykład:

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

To wyświetla:

4
3

W tym przykładzie element o wartości 'Charles' jest usuwany, co można zweryfikować wywołaniami sizeof (), które zgłaszają rozmiar 4 dla początkowej tablicy, a 3 po usunięcie.

 57
Author: Robin Nixon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-26 08:25:05

Również dla elementu nazwanego:

unset($array["elementName"]);

 50
Author: DefenestrationDay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-31 01:06:55

Niszczenie pojedynczego elementu tablicy

unset()

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

Wyjście będzie:

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

Jeśli chcesz ponownie indeksować tablicę:

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

Wtedy wynik będzie:

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

WyĹ 'Ä ... czenie elementu z koĹ" ca tablicy - zwraca wartoĹ " Ä ‡ usuniÄ ™ tego elementu

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

Wyjście będzie

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

Usuń pierwszy element (czerwony) z tablicy , - return wartość usuniętego elementu

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);

Wyjście będzie:

Array
(
    [b] => green
    [c] => blue
)
First Color: red
 27
Author: KTAnj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-25 18:16:34
<?php
    $stack = array("fruit1", "fruit2", "fruit3", "fruit4");
    $fruit = array_shift($stack);
    print_r($stack);

    echo $fruit;
?>

Wyjście:

Array
(
    [0] => fruit2
    [1] => fruit3
    [2] => fruit4
)

fruit1
 23
Author: Saurabh Chandra Patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-02 10:28:52

Aby uniknąć szukania można bawić się array_diff:

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

W tym przypadku nie trzeba szukać/używać klucza.

 21
Author: Mugoma J. Okomba,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-22 22:10:50

unset() niszczy określone zmienne.

Zachowanie unset() wewnątrz funkcji może się różnić w zależności od rodzaju zmiennej, którą próbujesz zniszczyć.

Jeśli zmienna globalizowana znajduje się wewnątrz funkcji, tylko zmienna lokalna jest niszczona. Zmienna w środowisku wywołującym zachowa tę samą wartość, co przed wywołaniem unset().

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

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

Odpowiedzią powyższego kodu będzie bar

Do unset() zmiennej globalnej wewnątrz function

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

$bar = "something";
foo();
?>
 14
Author: Ankit Aggarwal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-04 14:31:40

Jeśli musisz usunąć wiele wartości w tablicy, a wpisy w niej są obiektami lub danymi strukturalnymi, [array_filter][1] jest najlepszym rozwiązaniem. Te wpisy, które zwracają true z funkcji callback zostaną zachowane.

$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']]
 14
Author: spyle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-18 01:40:49

Tablice asocjacyjne

Dla tablic asocjacyjnych, użyj unset :

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

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

Tablice liczbowe

Dla tablic numerycznych, użyj array_splice :

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

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

Uwaga

Za pomocą unset dla tablic numerycznych nie spowoduje błędu, ale spowoduje bałagan w indeksach:

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

// RESULT : array(0 => 1, 2 => 3)
 14
Author: John Slegers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-11 18:48:25

Jeśli chcesz usunąć wiele elementów z tablicy asocjacyjnej, możesz użyć array_diff_key () (tutaj używane z 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);

Wyjście:

Array ( [key1] => value 1 [key3] => value 3 [key5] => value 5 ) 
 13
Author: Simon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-20 21:05:31
// Remove by value
function removeFromArr($arr, $val)
{
    unset($arr[array_search($val, $arr)]);
    return array_values($arr);
}
 11
Author: GigolNet Guigolachvili,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-30 12:54:36

Chciałbym tylko powiedzieć, że miałem konkretny obiekt, który miał zmienne atrybuty (to było w zasadzie mapowanie tabeli i zmieniałem kolumny w tabeli, więc atrybuty w obiekcie, odzwierciedlając tabelę, również się zmieniały

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 {}
        }
    }
}

Cały cel $ fields był taki, żebym nie musiał szukać wszędzie w kodzie, gdy zostaną zmienione, po prostu patrzę na początek klasy i zmieniam listę atrybutów i zawartość tablicy $fields, aby odzwierciedlić nowe atrybuty.

Trochę mi to zajęło. Mam nadzieję, że to komuś pomoże.
 6
Author: Oxydel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-26 07:12:39

Follow default functions

i)

$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);
 6
Author: msvairam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-25 13:07:09

Załóżmy, że masz taką tablicę:

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

Aby usunąć storage, wykonaj:

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

I otrzymujesz:

Array
(
    [user_id] => 193
)
 6
Author: Tebe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-25 18:17:17
$arr = array('orange', 'banana', 'apple', 'raspberry');
$result= array_pop($arr);
print_r($result);
 4
Author: Jens Erat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-17 09:21:37
<?php
$array = array("your array");
$array = array_diff($array, ["element you want to delete"]);
?>

Utwórz swoją tablicę w zmiennej $array i tam, gdzie umieściłem 'element, który chcesz usunąć', umieścisz coś w stylu: "a". A jeśli chcesz usunąć wiele to: "a", "b".

 4
Author: Joshua Charles Pickwell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-23 08:24:52

Unset () wiele, fragmentowanych elementów z tablicy

Podczas gdy unset () była tu wspominana kilka razy, nie zostało jeszcze wspomniane, że unset () akceptuje wiele zmiennych, co ułatwia usuwanie wielu, nieciągłych elementów z tablicy w ramach jednej operacji:

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

Unset () dynamicznie

Unset() nie akceptuje tablicy kluczy do usunięcia, więc poniższy kod nie powiedzie się (byłoby nieco łatwiej używać unset () dynamicznie chociaż).

$array = range(0,5);
$remove = [1,2];
$array = unset( $remove ); // FAILS: "unexpected 'unset'"
print_r($array);
Zamiast tego unset () może być używane dynamicznie w pętli foreach:
$array = range(0,5);
$remove = [1,2];
foreach ($remove as $k=>$v) {
    unset($array[$v]);
}
print_r($array);
// Output: [ 0, 3, 4, 5 ]

Usuń klucze tablicy przez skopiowanie tablicy

Jest jeszcze inna praktyka, o której jeszcze nie wspomniano. Czasami najprostszym sposobem pozbycia się pewnych kluczy tablicy jest po prostu skopiowanie $array1 do $ 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 ];

Oczywiście ta sama praktyka dotyczy ciągów tekstowych:

$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' ]
 4
Author: Kristoffer Bohmann,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-07 06:28:59

Rozwiązania:

  1. aby usunąć jeden element, użyj unset( ):
unset($array[3]);
unset($array['foo']);
  1. aby usunąć wiele elementów niezgodnych, użyj również unset( ):
unset($array[3], $array[5]);
unset($array['foo'], $array['bar']);
  1. aby usunąć wiele sąsiednich elementów, użyj array_splice( ):
array_splice($array, $offset, $length);

Dalsze wyjaśnienie:

Użycie tych funkcji usuwa wszystkie odniesienia do tych elementów z PHP. Jeśli chcesz zachować klucz w tablicy, ale z pustą wartością, Przypisz pusty łańcuch do elementu:

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

Oprócz składni, istnieje logiczna różnica między używaniem unset () a przypisywaniem " do elementu. Pierwszy mówi This doesn't exist anymore, podczas gdy drugi mówi This still exists, but its value is the empty string.

Jeśli masz do czynienia z liczbami, przypisanie 0 może być lepszą alternatywą. Tak więc, gdyby firma zaprzestała produkcji koła zębatego modelu XL1000, zaktualizowałaby swoje zapasy z:

unset($products['XL1000']);
Jeśli jednak tymczasowo zabrakło zębatek XL1000, ale planował otrzymać nową dostawę z fabryki jeszcze w tym tygodniu, jest to lepsze:]}
$products['XL1000'] = 0;

Jeśli unset( ) element, PHP dostosowuje tablicę tak, aby pętla nadal działała poprawnie. Nie zagęszcza tablicy, aby wypełnić brakujące otwory. To mamy na myśli, gdy mówimy, że wszystkie tablice są asocjacyjne, nawet jeśli wydają się być liczbowe. Oto przykład:

// 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 new element
$animals[ ] = 'gnu'; // add 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

To zwiększ tablicę do gęsto wypełnionej tablicy liczbowej, użyj array_values( ):

$animals = array_values($animals);

Alternatywnie, array_splice () automatycznie reindeksuje tablice, aby uniknąć pozostawiania dziur:

// 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
    )

Jest to przydatne, jeśli używasz tablicy jako kolejki i chcesz usunąć elementy z kolejki, jednocześnie zezwalając na losowy dostęp. Aby bezpiecznie usunąć pierwszy lub ostatni element z tablicy, użyj odpowiednio array_shift( ) i array_pop( ).

 3
Author: Star,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-29 11:08:20
<?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);
?>

Wyjście

 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 ) 
 2
Author: UMAR FAROOQUE KHAN,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-16 15:36:02

Usunięcie elementu tablicy na podstawie klucza:

Użyj unset funkcji jak poniżej:

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

unset( $a[1] );

print_r( $a );

/*

Output:

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

*/

Usuń element tablicy na podstawie wartości:

Użyj funkcji array_search, aby uzyskać klucz elementu i użyj powyższego sposobu, aby usunąć element tablicy, jak poniżej:

$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
)

*/
 2
Author: MahdiY,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-22 10:28:59

Dla tablic asocjacyjnych, z nie całkowitymi kluczami:

Po prostu, unset($array[$key]) zadziałałoby.

Dla tablic posiadających klucze całkowite i jeśli chcesz zachować swoje klucze:

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

unset($array[2]); $array = array_values($array);

  1. array_splice($array, 2, 1);
 1
Author: Akshay Prakash,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-27 08:23:13

To może pomóc...

<?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);
    ?>

Wynik będzie:

Array ( [0] => purple [1] => orange [c] => blue [d] => yellow )
 0
Author: Klajdi Dosti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-15 15:18:02

Podczas usuwania elementu z tablicy w PHP, dobrą funkcją do użycia jest funkcja unset. Oto przykład jego użycia:

$anArray = array("X", "Y", "Z");

unset($anArray[0]);

//'dumps' the content of $anArray to the page:
var_dump($anArray);  

Wyjście funkcji var_dump będzie następujące:

array(2) { [1]=> string(1) "Y" [2]=> string(1) "Z" }
 0
Author: Arun Vitto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-14 08:53:35

Możesz po prostu użyć unset() do usunięcia tablicy.

Pamiętaj, że tablica musi być wyłączona po foreach funkcji.

 0
Author: Drake Boein,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-06 11:00:27

Unset nie zmienia indeksu, ale array_splice robi

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


    echo $arrayName['500']; 
    //somevalue500
    array_splice($arrayName, 1,2);

    print_r( $arrayName );
    //Array ( [0] => somevalue [1] => somevalue500 )



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


    echo $arrayName['500']; 
    //somevalue500
    unset($arrayName[1]);

    print_r( $arrayName );
    //Array ( [0] => somevalue [1] => somevalue500 )
 0
Author: inrsaurabh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-10 15:05:55

$x = array(1, 2, 3, 4, 5);
var_dump($x);
unset($x[3]); // here is key to be delete
echo '<br>';
array_values($x);
var_dump($x);
 0
Author: Wakar Ahmad Khan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-21 06:48:02