PHP array_splice / array_slice kullanarak belirli bir öğeyi silme

5 Cevap php

Nasıl array_splice / array_slice PHP kullanarak belirli bir öğe silerim?

for example: array('a','b','c'); how to just delete 'b'? so the array remains: array('a','c');

Teşekkürler

5 Cevap

Temelde: Just do it.

manual bu gibi iyi örnekler vardır:

$input = array("red", "green", "blue", "yellow");
array_splice($input, 2);
// $input is now array("red", "green")

bir şey sizin için işe yaramazsa, sorunuza daha fazla detay eklemek lütfen.

Aslında. Bunu yapmak için iki yol ile geldi. Bu indeks sorunu ile başa gidiyoruz nasıl bağlıdır.

Bir diziden belirli öğeleri sildikten sonra endeksleri kalmasını istiyorsanız, unset () gerekir.

<?php 
   $array = array("Tom","Jack","Rick","Alex"); //the original array

   /*Here, I am gonna delete "Rick" only but remain the indices for the rest */
   unset($array[2]);
   print_r($array);
?>  

Söndürmek olacaktır:

Array ( [0] => Tom [1] => Jack [3] => Alex )  //The indices do not change!

Eğer önceki endeksleri tutmak olmadan yeni bir dizi gerekiyorsa Ancak, daha sonra array_splice kullanın ():

<?php 
  $array = array("Tom","Jack","Rick","Alex"); //the original array
  /*Here,we delete "Rick" but change indices at the same time*/
  array_splice($array,2,1);  // use array_splice()

  print_r($array);
?>

Çıktı bu sefer olacaktır:

Array ( [0] => Tom [1] => Jack [2] => Alex ) 

Bu yardımcı olacağını, Umut!

Ile başlayan (id Silmek istediğiniz öğe):

$input = array("a", "b", "c", "d", "e");
$id=2;

Dizi ekleme:

$a1 = array_slice($input, $id);
print_r($a1);

Array
(
    [0] => c
    [1] => d
    [2] => e
)

dizi dilim:

array_splice($input, $id-1);
print_r($input);

Array
(
    [0] => a
)

Splice ve dilim birleştirme size giriş dizi olarak aynı ancak belirli bir öğe olmadan bir dizi verecektir.

Muhtemelen tek bir satırını kullanarak bunu yapabilirsiniz ama ben okuyucular için bir egzersiz olarak bırakacağım.

Böyle olmak zorunda mı array_splice? Ben en uygun şekilde düşünüyorum (belki dizi boyutuna bağlı olarak, bilmiyorum ne kadar iyi array_search terazi) kullanmak için array_search() with unset() :

$array = array('foo', 'bar' => 'baz', 'bla', 5 => 'blubb');

// want to delete 'baz'
if(($key = array_search('baz', $array)) !== FALSE) {
    unset($array[$key]);
}

nasıl sadece "mavi" silmek için?

Buyrun:

$input = array("red", "green", "blue", "yellow");
array_splice($input, array_search('blue', $input), 1);