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.
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.
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)
} */
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
)
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]);
}
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]);
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.
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"]);
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
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
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.
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();
?>
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']]
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)
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 )
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);
}
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.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);
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
)
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);
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".
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' ]
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:
- aby usunąć jeden element, użyj unset( ):
unset($array[3]); unset($array['foo']);
- aby usunąć wiele elementów niezgodnych, użyj również unset( ):
unset($array[3], $array[5]); unset($array['foo'], $array['bar']);
- 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( ).
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 )
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
)
*/
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:
$array = [ 'mango', 'red', 'orange', 'grapes'];
unset($array[2]);
$array = array_values($array);
array_splice($array, 2, 1);
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 )
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" }
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.
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 )
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);
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