Autor Zpráva
Silver8000
Profil
Nevite nahodou nekdo jak z array prefiltrovat pouze odkazy?

Priklad existujici array :

array(
                  'slozka',
                  'soubor.txt',
                  'c:/home_server/www',
                  'http://domena/cesta/',
                  'https://domena/soubor.php'
                  );

Vysledek nove array by mel vypadat takto :
array(
                  'http://domena/cesta/',
                  'https://domena/soubor.php'
                  );

Diky predem.
Jan Tvrdík
Profil
Co takhle použít funkci array_filter?
Silver8000
Profil
Taky me to napadlo ale jakym spusobem to udelat ukazte aspon prikladny nazor at vim jak dal.
Jan Tvrdík
Profil
Silver8000:
Příklady použití funkce array_filter jsou v dokumentaci.
juriad
Profil
<?php
function je_odkaz($odkaz)
{
    return $odkaz[0] == 'h'; # sem si napíšeš něco chytřejšího
}

$odkazy = array(
                  'slozka',
                  'soubor.txt',
                  'c:/home_server/www',
                  'http://domena/cesta/',
                  'https://domena/soubor.php'
                  );

print_r(array_filter($odkazy, "je_odkaz"));
okolojsoucí
Profil
$odkazy2 = array();
$odkazy = array(
  'slozka',
  'soubor.txt',
  'c:/home_server/www',
  'http://domena/cesta/',
  'https://domena/soubor.php'
);
foreach($odkazy as $uri)
  if(filter_var($uri, FILTER_VALIDATE_URL))
    $odkazy2[] = $uri;
    
print_r($odkazy2);
Silver8000
Profil
Diky za tip ted uz jsem aspon pochopil co znamenaji ty hodnoty ve filtru.
<?php
function is_url($url){
if(filter_var($url, FILTER_VALIDATE_URL)){
return $url;
}

}
?>

Foreach je na prd a spomaluje proces;

priklad pouziti :

$odkazy = array(
                  'slozka',
                  'soubor.txt',
                  'c:/home_server/www',
                  'http://domena/cesta/',
                  'https://domena/soubor.php'
                  );

print_r(array_filter($odkazy, 'is_url'));
DarkMeni
Profil
Silver8000:
Foreach je na prd a spomaluje proces
Jen tak mimochodem, myslíš že array_filter() nepoužije foreach?
Možná ne, možná je to udělaný přes for nebo něco jinýho, ale to pole nějak procházet taky musí
okolojsoucí
Profil
DarkMeni:
Foreach nepoužije, ale nějaké náznaky po cyklu jsou viděny přímo ve zdroji https://github.com/php/php-src/blob/af6c11c5f060870d052a2b765dc634d9e47d0f18/ext/standard/array.c#L4211-L4308
Silver8000
Profil
Jasne ale ja to myslel tak ze proc pouzivat foreach a zbytecne kod zvetsovat a rozepisovat kdyz uz existuje na to rychlejsi funkce.
Si predstav ze uz jen vypisovani dat z DB a dalsich asi 15 funkci by melo foreach...spozduje to nacitani stranek uzivateli
okolojsoucí
Profil
Silver8000:
spozduje
Chtělo by to se před nějakým programováním naučit český jazyk, viz. zpozdit.
Silver8000
Profil
Jsem v anglii a mam pomotanou hlavu tak se mi nediv ze pisu bez diakritiky a mam preklepy ve slovech navic resit takove male chybky je zbytecnost kdyz se to netyka PHP.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: