Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: array_search()
Forum PHP.pl > Forum > PHP
Birkoff
Witam!

Natknąłem się na ciekawy problem:
Przeszukuję tablicę w poszukiwaniu jakiejś wartości używając funkcji array_search(). Wygląda to mniej więcej tak:

  1. <?php
  2. $rs=db_query("SELECT * FROM articles WHERE links like '%article+".$_GET['id']."+%'");
  3. $i=db_num_rows($rs);
  4. if ($i > 0) {
  5. while ($row=db_fetch_array($rs)) {
  6. $link=explode("|",$row['links']); 
  7. $key=array_search ( 'article+'.$_GET['id'].'+'.$del_article_title, $link);
  8. unset($link[$key]);
  9. $link=implode("|",$link);
  10. db_query("UPDATE articles SET links='".$link."' WHERE id='".$row['id']."' LIMIT 1");
  11. }
  12. }
  13. ?>


Już tłumacze o co chodzi:
Pole links zawiera na przykład dane:

article+140+title|article+143+othertitle

czyli elementy ktore moge sobie rozbic na tablice wzgledem |.

i teraz uzywajac array_search do zmiennej $key zapisuje sobie klucz spelniajacy szukany warunek...

PYTANIE: czy mogę przeszukiwać tablicę pod kątem jakiejś wartości mając zaledwie jej kawałek (kawałek wartości a nie tablicy) - czyli na przyklad mam tylko 140 i szukam wszystkich kluczy tablicy, ktore posiadaja wartosc zawierajaca znaki 140...

Cos w stylu zapytania SQL like '%140%'...

Mam nadzieje ze wyrazam sie dosc jasno...

INNA SPRAWA: jesli funkcja array_search znalazla szukana wartosc w kluczu [0] tablicy, to zwrocona wartosc i zapisana do zmiennej $key jest rowna 0.
Jak zatem sprawdzic czy $key jest rozne od FALSE (bo jak nie znajdzie sie klucz to jest zwracane FALSE - wiem ze to wiecie smile.gif ) - skoro wartosc 0 jest traktowane przy sprawdzeniu tak samo jak FALSE questionmark.gif?

Z tego powodu w powyzszym przykladzie nie ma sprawdzenia wartosci $key - po prostu gdy zwrocona byla wartosc 0 jako klucz tablicy [0] - warunek widzial FALSE...

Jeśli macie jakieś ciekawe spostrzezenia jak to rozwiazac, to bardzo proszę o odpowiedzi smile.gif
aleksander
AD Inna sprawa: zamiast == używaj ===. === sprawdza oprócz warosci także typy wartosci smile.gif
Kicok
Cytat
PYTANIE: czy mogę przeszukiwać tablicę pod kątem jakiejś wartości mając zaledwie jej kawałek (kawałek wartości a nie tablicy) - czyli na przyklad mam tylko 140 i szukam wszystkich kluczy tablicy, ktore posiadaja wartosc zawierajaca znaki 140...

Cos w stylu zapytania SQL like '%140%'...




  1. <?php
  2. foreach($tablica AS $num => $item)
  3. if(strpos($item, 'szukanawartosc') !== false)
  4. echo('Znaleziono! Klucz: '.$num);
  5. ?>

Jeśli chcesz żeby działało tak jak array_search() - czyli po pierwszym znalezionym elemencie koniec szukania - to dodaj break; do instrukcji wykonywanych po spełnieniu warunku przy if
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-2025 Invision Power Services, Inc.