PHP nasıl belirli bir kelime eşit tuşları ile dizi elemanları kaldırırım?

3 Cevap

Ben bu büyük bir dizi var:

array(47) (
    "name" => string(0) ""
    "state" => string(7) "Alabama"
    "city" => string(0) ""
    "country" => string(13) "United States"
    "location" => string(0) ""
    "rooms" => string(0) ""
    "price" => string(0) ""
    "highlights" => array(5) (
        0 => string(0) ""
        1 => string(0) ""
        2 => string(0) ""
        3 => string(0) ""
        4 => string(0) ""
    )
    "specifications_type" => string(0) ""
    "specifications_lotsize" => string(0) ""
    "specifications_apn" => string(0) ""
    "specifications_interest" => string(0) ""
    "specifications_year" => string(0) ""
    "specifications_buildings" => string(0) ""
    "specifications_stories" => string(0) ""
    "specifications_corridors" => string(0) ""
    "financials_room" => string(0) ""
    "financials_other" => string(0) ""
    "financials_total" => string(0) ""
    "financials_multiplier" => string(0) ""
    "financials_caprate" => string(0) ""
    "financials_netincome" => string(0) ""
    "amenities_pool" => string(0) ""
    "amenities_fitness" => string(0) ""
    "amenities_quarters" => string(0) ""
    "amenities_services" => string(0) ""
    "amenities_spa" => string(0) ""
    "amenities_meetspace" => string(0) ""
    "amenities_parkspace" => string(0) ""
    "amenities_others" => string(0) ""
    "facilities_room" => string(0) ""
    "facilities_hvac" => string(0) ""
    "facilities_furnitures" => string(0) ""
    "facilities_tv" => string(0) ""
    "facilities_ref" => string(0) ""
    "facilities_microwave" => string(0) ""
    "consumables_resto" => string(0) ""
    "consumables_restocpct" => string(0) ""
    "consumables_barlounge" => string(0) ""
    "consumables_barloungecpct" => string(0) ""
    "consumables_bevrevenue" => string(0) ""
    "consumables_others" => string(0) ""
    "specifications" => string(100) "{"type":"","lotsize":"","apn":"","interest":"","year":"","buildings":"","stories":"","corridors":""}"
    "consumables" => string(89) "{"resto":"","restocpct":"","barlounge":"","barloungecpct":"","bevrevenue":"","others":""}"
    "amenities" => string(100) "{"type":"","lotsize":"","apn":"","interest":"","year":"","buildings":"","stories":"","corridors":""}"
    "facilities" => string(100) "{"type":"","lotsize":"","apn":"","interest":"","year":"","buildings":"","stories":"","corridors":""}"
    "financials" => string(100) "{"type":"","lotsize":"","apn":"","interest":"","year":"","buildings":"","stories":"","corridors":""}"
)

I want to remove the elements whose keys start with any of the following: "specifications_", "amenities_", "facilities_", "consumables_", "financials_"

Ben bir geri ile array_filter kullanarak düşündüm ama nasıl geri arama şeyler yapmak için hiçbir fikrim yok. Lütfen yardım edin.

3 Cevap

Bu tuşları korur ama senin sorunun tuşları, filtre edemez çünkü aslında bunun için array_filter() kullanamazsınız. Bu durumda siz de sadece döngü OLABİLİR.

$prefix = array(
  'specifications_',
  'amenities_',
  'facilities_',
  'consumables_',
  'financials_',
);

$output = array();
foreach ($input as $k => $v) {
  foreach ($prefix as $p) {
    $add = true;
    if (strpos($k, $p) === 0) {
      $add = false;
      break;
    }
  }
  if ($add) {
    $output[$k] = $v;
  }
}

Önekler liste bu büyük değil ve dizi o büyük değil ama ihtiyacınız olmadıkça çözümü overcomplicate gerek yok gibi Şimdi bu kadar uzun oldukça iyi çalışıyor.

array_filter() only passes the value and so is unsuitable for this task. Iterate through the array with foreach() , yeni bir dizi için tutmak istediğiniz öğeleri ekleme.