Pytanie w sprawie filtering, higher-order-functions, php, arrays – Jak usunąć wszystkie elementy tablicy PHP zawierające pewien podciąg?

3

ok spojrzałem na niektóre funkcje i nie mam szczęścia znaleźć żadnego,

Chcę filtrować tablicę, aby usunąć konkretną tablicę zawierającą jakiś ciąg

Oto przykład:

<code>$array(1 => 'January', 2 => 'February', 3 => 'March',);
$to_remove = "Jan"; // or jan || jAn, .. no case sensitivity
$strip = somefunction($array, $to_remove);
print_r($strip);
</code>

powinien wrócić

<code>[1] => February
[2] => March
</code>

funkcja, która wyszukuje podciąg dla wszystkich wartości w tablicy, jeśli podciąg zostanie znaleziony, usuń ten element z tablicy

tak, ale wygląda tak długo, a moje lenistwo nie przeczyta tego wszystkiego, lol, czy ktoś może użyć tej funkcji w przykładzie, który napisałem, dzięki Lili Abedinpour
php.net/array_filter? Funkcje PHP są dość łatwe do znalezienia i nazwane tak, jak robią to ... Marc B
po 7 pytaniach przynajmniej jedna z nich musi mieć akceptowalną odpowiedź. user557846
@marc tak, ale php nie ma tak dużo informacji o tej funkcji, chcę zobaczyć, jak to działa, jak chcę to powyżej Lili Abedinpour

Twoja odpowiedź

3   odpowiedź
0

Najprostszym sposobem jestarray_filter. Ta funkcja odbiera tablicę do filtrowania i funkcję wywołania zwrotnego, która dokonuje rzeczywistego filtrowania na podstawie otrzymanej wartości:

<code>function filter_func( $v )
{
  return ( ( $var % 2 ) == 0 );
}
$test_array = array( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 );
print_r( array_filter( $test_array, "filter_func" ) );
</code>

Nadzieja pomogła!

4

Możesz użyćarray_filter () zzamknięcie (funkcja inline):

<code>array_filter(
  $array,
  function ($element) use ($to_remove) {
    return strpos($element, $to_remove) === false;
  }
);
</code>

(Wersja PHP> = 5.3)

7

Możesz użyćarray_filter ipaski

<code>$array = array(1 => 'January', 'February', 'March');
print_r(array_filter($array, function ($var) { return (stripos($var, 'Jan') === false); }));
</code>
dobra odpowiedź, dzięki! Lili Abedinpour
Hej, mam dla ciebie pytanie. Zamiast zadawać nowe pytanie, najpierw spróbuję szczęścia. To, co napisałeś, działa doskonale, ale jak mogę na przykład usunąć „a”. Ponieważ jeśli uruchomię to w ten sposób, usunie również wpisy tablicy, które sąapple lubbanana. Jeśli nie masz nic przeciwko, zadaj kolejne pytanie. Co zrobić, jeśli szukane słowa są w tablicy o nazwie $ common_words. Więc zamiast tylko 'Jan' w twoim przykładzie mam cały szereg słów. Déjà vu
Następnie zmień=== false z!== false. W tym przypadkureturn (stripos($var, 'fEb') !== false). mpratt
działa dobrze, ale jak wyłączyć dla niego wrażliwość na wielkość liter? Lili Abedinpour

Powiązane pytania