Bir diziden belli bir değere sahip herhangi / tüm anahtar / değer çiftlerini kaldırmak için bir PHP işlevi var mı?

4 Cevap php

Ben bu gibi sorular PHP ile çalışmayı sevmiyorum nedeni olduğunu düşünüyorum. Eğer aradığınızı bulabilirsiniz eğer manuel iyidir. Okuduktan sonra Array Functions, ben gerek işlevselliği sağlayan bir görmedim.

Ben belirli bir değer için tarama ve, var ise, onu kaldırmak istiyorum (sayısal endeksli benim durumumda,) bir dizi var. Bu değerin tüm örneklerini kaldırılmıştır Ve sonra, ben array_values kullanarak diziyi yeniden düzenlemek istiyorum.

4 Cevap

Sadece bu eklemek için ...

array_diff ikinci dizide görünmüyor ilk dizideki öğeleri göstermek için görünür. Bu, sadece bir ya da diğer dizideki görünen bu elemanları göstermez.

örneğin

<?
$test = "hello";
$array1 = array("a" => "green", "red", "bicycle", "red");
$array2 = array("b" => "green", "yellow", "red", "blue", "yellow", "pink");
$result = array_diff($array1, $array2);
print_r ($result);
?>

iadeler

Array
(
    [1] => bicycle
)

Ben array_diff işlevi gibi, ama bir dizi aşağı geçmek istemiyorsanız, benim bir tane senaryosunu var:

function array_unset_value($value, &$array) {
    $key = array_search($value, $array);
    while ($key !== false) {
        unset($array[$key]);
        $key = array_search($value, $array);
    }
}

array_filter sizin için yapar. Sadece bir filtre geri arama işlevi sağlamak gerekir:

function myFilter($Value){
   if($Value == 'red'){
      return false;
   }
   return true;
}

$Values = array("a" => "green", "red", "bicycle", "red");

$Values = array_filter($Values, 'myFilter');

döner:

array {
  ["a"] => "green"
  [1]   => "bicycle"
}

Filtre işlevi kaldırmak isteyen için sahte ve tutmak istediğiniz değerler için geçerlidir dönmelidir. Sonra sadece devam edin ve yeniden kütüğü dizi için array_values ​​kullanın. örneğin

$Values = array_values(array_filter($Values, 'myFilter'));

Eğer bir nesne içinde bu yapıyor ve iseniz size geri arama için bu formu kullanabilirsiniz nesnesi içinde bir filtre yöntemi çağırmak istiyorum:

array_filter($Values, array($this,'myFilter'));