Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Uzyskiwanie prefiksu z tablicy zawierającej łańcuchy
Forum PHP.pl > Forum > PHP
starach
Mam tablicę z nazwami, gdzie niektóre z nich mają taki sam początek ( prefiks ). Czy jest jakaś funkcja wbudowana w PHP która mi porówna te nazwy i zwróci owy prefiks? Jeśli nie to jakich funkcji powinienem użyć do porównania tych łańcuchów? A może powinienem użyć tylko operatorów porównania i konstrukcji warunkowych oraz pętli?

Nazwami są pola z tabeli w bazie danych.
Chcę żeby wynikiem funkcji było "al_".
Cytat
al_id
al_title
al_desc
al_content
al_date_add
al_date_update
_u_id
Do pól zawierających wartości z innych tablic stosuję podkreślenie.

p.s.
Jak zwykle mam nadzieję że ktoś już potrzebował takiej funkcjonalności i jest ona już w PHP,
ale zapewne również jak zwykle będę musiał to pisać sam. tongue.gif
Nekro
Witam,

Nic mi do glowy teraz tak na szybko nie przychodzi jak tylko petla po tablicy.
Potraktowanie kazdego klucza explodem: $tmp = explode('_',$array) i wtedy pod $tmp bedziesz mial ow prefix.
Nie wiem dokladnie co chcesz potem z tymy prefixami zrobic ale dzieki explode mozesz sobie je zapisac do jakiejs tablicy tymczasowej i potem robic co tylko bedziesz chcial smile.gif

Pozdrowienia
starach
Cytat(orglee @ 17.11.2008, 16:28:42 ) *
Jak zwykle mam nadzieję że ktoś już potrzebował takiej funkcjonalności i jest ona już w PHP,
ale zapewne również jak zwykle będę musiał to pisać sam. tongue.gif


Napisane w półtorej godziny. Ehh po co pytałem.

  1. <?php
  2. private function _parsePrefix()
  3. {
  4.    $prefix = '';
  5.    $strpos_counter = 0;
  6.    while(0 == 0)
  7.    {
  8.        $correct_amount = 0;
  9.        foreach($this as $field)
  10.        {
  11.            $field_name = $field->getName();
  12.            
  13.            if(empty($prefix) || $prefix == substr($field_name, 0, strlen($prefix)))
  14.            {
  15.                if($correct_amount == 0 && strlen($field_name) > $strpos_counter)
  16.                {
  17.                    $prefix .= $field_name{$strpos_counter};
  18.                }
  19.                $correct_amount++;
  20.            }
  21.        }
  22.        // Finish if less than half letters fits
  23.        if($correct_amount <= $this->count() / 2)
  24.        {
  25.            if(strlen($prefix) > 0)
  26.            {
  27.                $prefix = substr($prefix, 0, strlen($prefix) - 1);
  28.            }
  29.            break;
  30.        }
  31.        $strpos_counter++;
  32.    }
  33.    return $prefix;
  34. }
  35. ?>
Może się to komuś przyda.

Necro: Nie bardzo rozumiem.
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.