PHP: Bir dizinin belirli bir öğe kaldırmak için nasıl?

8 Cevap php

Ben elemanları adını biliyorum ne zaman nasıl bir öğe bir diziden kaldırabilirim? örneğin:

Ben bir dizi var:

$array = (apple, orange, strawberry, blueberry, kiwi);

kullanıcının girdiği strawberry

strawberry kaldırılır.

Tam olarak açıklamak için:

Ben bir virgülle ayrılmış öğelerin listesini depolayan bir veritabanı var. Kod bu seçim bulunan bir kullanıcı tercihine dayalı listede çeker. Onlar çilek seçerseniz Yani, onlar kod çilek bulunduğu vardı her giriş çeker daha sonra bir dizi) (bölünmeyi kullanarak bu dönüştürür. Ben diziden, bu örnek çilek için, kullanıcı seçilen öğeleri kaldırmak onlara istiyorum.

8 Cevap

array_diff() 1 line çözüm için kullanın:

$array = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi', 'strawberry'); //throw in another 'strawberry' to demonstrate that it removes multiple instances of the string
$array_without_strawberries = array_diff($array, array('strawberry'));
print_r($array_without_strawberries);

... Ekstra fonksiyonlar veya foreach döngüsü için gerek yok.

$arr = \array_filter($arr, function ($v) { return $v != 'some_value'; }

Burada (vaka gibi görünüyor) bir düz dizi kullanıyorsanız, bunun yerine bu kodu kullanarak olmalıdır:

if (($key = array_search('strawberry', $array)) !== false) {
    array_splice($array, $key, 1);
}

unset($array[$key]), yalnızca öğeyi kaldırır ama düz dizi yeniden değil.

Supposingly biz $array = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi'),

json_encode(array_splice($array, 2, 1)) verimleri ['apple', 'orange', 'blueberry', 'kiwi']

json_encode(unset($array[2])) verimleri {"0": "apple", "1": "orange", "3": "blueberry", "4": "kiwi"}

unset($array[$key]) dizi yeniden değil dikkat edin.

Daha iyi bir yaklaşım belki bir ilişkisel dizi tuşları gibi değerleri tutmak için, ve fiili dizi istediğinizde bunun üzerine () array_keys çağırır. Bu şekilde sizin eleman bulmak için array_search kullanmanız gerekmez.

Bu gibi olacak:

 function rmv_val($var)
 {
     return(!($var == 'strawberry'));
 }

 $array = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi');

 $array_res = array_filter($array, "rmv_val");

Ben gibi dizilerde tuşları aramak için array_key_exists kullanmayı tercih ediyorum:

Array([0]=>'A',[1]=>'B',['key'=>'value'])

bulmak için, etkin belirtilen array_search ve İn_Array'in beri () burada çalışmıyor. Ve unset() ile malzeme kaldırma yok.

Ben biri yardımcı olacağını düşünüyorum.