Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Filtrowanie tablicy według klucza
Forum PHP.pl > Forum > Gotowe rozwiązania > Szukam
Shadowsword
Witam!

Nie wiem, czy to czego szukam jest aż tak malo popularne, że tego nigdzie nie ma, czy po prostu ja nie umiem szukać...

Mam wielowymiarową tablice ze stringami w kluczach. Chciałbym w niej zostawić tablice w których kluczu znajdzie się dany ciąg znaków. Dokładnie chodzi mi o coś takiego jak array_filter tutaj:

Cytat
Description:
Return array of matching values from array using regular expression.
<?php
class array_ereg {
  function array_ereg($pattern) { $this->pattern = $pattern; }
  function ereg($string) {
  return ereg($this->pattern, $string);
  }
}
?>
Usage :
<?php
  $matches = array_filter($subject, array(new array_ereg($pattern), 'ereg'));
?>
Example: 
 <?php
  $subject = array ("Thumbs.db", "image001.png", "image001.jpg", "image002.png");
  print_r(array_filter($subject, array(new array_ereg("image[0-9]{3}\.png"), 'ereg')));
?>
Outputs:
  Array ( [1] => image001.png [3] => image002.png )



Tylko, żeby nie brało pod uwagę zawartości tylko klucz.
Shadowsword
Niestety nie. To array keys wyglądało ciekawie, ale chyba jednak nie da rady tym zrobić. Foreach zupełnie odpada a to array walk to chyba podobnie jak foreach działa z tego co zrozumiałem.
Kabraxis
Dlaczego? Da się to zrobić używając dowolnej z tych funkcji. To tylko kwestia wybrania tej, która bardziej Ci odpowiada, a nie tej którą się da.

Rzecz jasna musisz to połączyć z preg_match lub preg_replace_callback.
Shadowsword
W sumie to nie potrzebuje żadnego z tych 3 co podałeś wyżej, wystarczy samo preg_match. Wielkie dzięki smile.gif
wookieb
A ja bym zastosował inny sposób. Skoro nie ma funkcji typu array_filter na kluczach to zrób
http://php.net/array_flip

przefiltruj a potem znowu odwróć.
Shadowsword
Tablica jest wielowymiarowa, więc pojawia mi się taki błąd
Cytat
Can only flip STRING and INTEGER values! in /****/tablica.php on line 51

Ale pomysł ciekawy ^^.
wookieb
Wiec najlepszym twoim rozwiazaniem jest zwykly foreach i call_user_func badz nawet bez tego. Możliwości jest mnóstwo.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.