Portál AbcLinuxu, 10. května 2025 03:12
Resim tu asi jednoduchou vec , potreboval bych zjistovat existenci souboru z pole .
Budu mit treba v databazi seznam souboru treba soubor.txt , soubor2.txt , soubor.jpg atd ...
Chtel bych z tohoto pole hledat soubory na disku a pripadne s nima dal pracovat .
Napadl me for s countem pro pole , nebo foreach .
V mem prikladu zpracuje jen prvni slovo v poly .
Řešení dotazu:
$pole = array( "nazev_1", "nazev_2", "nazev_n"); foreach( $pole as $nazev ) { if( file_exists( $nazev ) ){ // blok prikazu } else { echo "soubor neexistuje"; } }
Tak prikladam kod .
/* funkce na ovladani sym linku */
function share_action ($id,$genre,$name,$total,$from,$by,$sort,$year)
{
$exp_name = str_replace(" ","_",(trim($name)));
$array_genre = explode(",", $genre );
for($i = 0; $i < count($array_genre); $i++)
{
$video_link = "/mnt/disk01/sym_link_movies/".dir_file_name($array_genre[$i])."/".dir_file_name($exp_name)."_".$year."/video.avi";
$array_disc = array("/mnt/disk01/id_movies/", "/mnt/disk02/id_movies/" , "/mnt/disk03/id_movies/");
for($d = 0; $d < count ($array_disc); $d++)
{
if (file_exists($array_disc[$d].$id.".avi"))
{
if (file_exists($video_link))
{$img = "<a href=\"/movies/share_movie.php?razeni=".$sort."&id=".$id."&share=off&celkem=".$total."&od=".$from."&by=".$by. "\"><img src=\"/movies/img/off.png\"></a>";}
else
{$img = "<a href=\"/movies/share_movie.php?razeni=".$sort."&id=".$id."&share=on&celkem=".$total."&od=".$from."&by=".$by."\"><img src=\"/movies/img/on.png\"></a>";}
return $img;
}
else
{$img = "<img src=\"/movies/img/warning.png\">";}
return $img;
}//konec for pro diskova pole
}//konec for pro genre
}//konec funkce
/* konec funkce */
Funkce probehne v poradku , ale zkontroluje jen prvni misto v poly disc , na dalsi kasle .
Zkousel jsem i foreach , ale bohuzel se stejnym vysledkem .
$video_link
. Patří dovnitř cyklu. Pokud bys používal foreach
, tak bys na to možná přišel sám.
$video_link je v poradku , me jde o $array_disc , projede jen prvni z pole a dalsi se uz netestujou .
return $img;
uvnitř cyklu?
Jsou tam dve podminky , pro kazdou jeden return , v pripade ze jeden zakazu , tak uz to nefunguje jak ma .
return
má být uvnitř druhého else
. Takto se provede vždy po prvním průchodu cyklem.
for
nahradit konstrukcí foreach
. Zmizí proměnné $i
a $d
. Zmizí i funkce count()
. Skript se tím hodně zpřehlední.
Nejdriv se testuje jestli existuje soubor na disku , v pripade ze ne vrati varovani a v pripade ze soubor existuje tak zkontroluje jestli uz nejsou symbolicke linky hotove , v pripade ze ano tak mi zdeli ze uz je hotovo , v pripade ze ne tak mi nabidne jejich vytvoreni .
return
- je mimo větev else
.
Dik mrknu na to , dost se v tom uz ztracim .
Funguje , ja vim je to sprasene , ale me jde hlavne ted o funkcnost , az to bude hotove tak zacnu cistit , komentovat atd...
/* funkce na ovladani sym linku */
function share_action ($id,$genre,$name,$total,$from,$by,$sort,$year)
{
$exp_name = str_replace(" ","_",(trim($name)));
$array_genre = explode(",", $genre );
$array_disc = array("/mnt/disk01/id_movies/", "/mnt/disk02/id_movies/" , "/mnt/disk03/id_movies/");
for($d = 0; $d < count($array_disc); $d++)
{
$disc = ($array_disc[$d].$id.".avi");
if (file_exists($disc))
{
for($i = 0; $i < count($array_genre); $i++)
{
$video_link = "/mnt/disk01/sym_link_movies/".dir_file_name($array_genre[$i])."/".dir_file_name($exp_name)."_".$year."/video.avi";
if (file_exists($video_link))
{$img = "<a href=\"/movies/share_movie.php?disc=".$disc."&razeni=".$sort."&id=".$id."&share=off&celkem=".$total."&od=".$from."&by=".$by. "\"><img src=\"/movies/img/off.png\"></a>";}
else
{$img = "<a href=\"/movies/share_movie.php?disc=".$disc."&razeni=".$sort."&id=".$id."&share=on&celkem=".$total."&od=".$from."&by=".$by."\"><img src=\"/movies/img/on.png\"></a>";}
return $img;
}//konec for pro genre
}
}
if (!file_exists($disc))
{
{$img = "<img src=\"/movies/img/warning.png\">";}
return $img;
}
}//konec funkce
Muj olibeny editor je vim , vse krasne zabarvuje . Po vlozeni kodu sem na abicko se rozpadne formatovani .
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.