Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]chcę utworzyć tablicę z cyfry np 5 na array(0,1,2,3,4)
Forum PHP.pl > Forum > Przedszkole
adek-
Witam, mam plik który odczytuje mi swoją nazwę __FILENAME__ wchodzi do folderu o tej nazwie i zlicza obrazki jpg

  1. $pathInfo = pathinfo(__FILE__);
  2. $plikname = $pathInfo['filename'];
  3. $ilzdj = (count(glob('./zdjecia/'. strtolower($plikname) .'/*.jpg')) - 1) / 2;

-1 dlatego bo jedno zdjęcie jest avatarem, a podzielić przez 2 bo są tam też miniaturki smile.gif

A potrzebne jest mi to aby zautomatyzować skrypt galerii, gdzie za każdym razem musiałem wpisać w kawałku kodu js
  1. //przykład gdzie jest 5 zdjęć , jeśli była inna ilość to musiałem edytować ręcznie plik i dopisywać. -kod galerii w tym samym pliku co reszta rzeczy
  2. var ids = new Array(0,1,2,3,4);

Chcę teraz zrobić coś na zasadzie $ilzdj wyrzuca np cyfrę 5 i żeby jakoś to rozparcelować na 0,1,2,3,4 i wstawić w to new Array( );
Nie mam pojęcia jak to zrobić i gdzie szukać, bo w podstawach o zmiennych jest tylko opisane tworzenie array(x,x,x) ręcznie a nie z cyfry ;/
dla mnie wystarczyło by zrobić żeby jakaś zmienna wyrzuciła kod
  1. //np $ilzdj wyliczyło że jest 5 zdjęć
  2. if $zmienna = $ilzdj
  3. than
  4. $zmienna = '0,1,2,3,4';

a ja bym sobie ją wstawił jakoś np
  1. <script type="text/javascript">
  2. $(document).ready(function(){
  3. var ids = new Array(<?php echo $zmienna; ?>);
  4. ...
  5. });
  6. </script>


wiem prymitywne rozwiązania mi przychodzą do głowy, ale na razie są dla mnie wystarczające.
sada
  1. $zmienna='';
  2. for($i=0;$i<$ilzdj;$i++){
  3. if($i==$ilzdj-1){
  4. $zmienna=$zmienna.$i;
  5. }
  6. else
  7. {
  8. $zmienna=$zmienna.$i.',';
  9. }
  10. }


sorry w pierwszej wersji była pomyłka + zamiast kropki
CuteOne
Twoje podejście jest bezsensowne - po co tworzyć tablice (0,1,2,3,4,5) skoro nie przekazujesz nic innego jak ilość zdjęćquestionmark.gif

  1. // $ilzdj = (count(glob('./zdjecia/'. strtolower($plikname) .'/*.jpg')) - 1) / 2;
  2.  
  3. <script type="text/javascript">
  4. $(document).ready(function(){
  5. var ids = <?php echo $ilzdj;?>;
  6.  
  7. for(var i=0;i<=ids;i++) {
  8.  
  9. alert(i);
  10. }
  11. ...
  12. });


A jeżeli chcesz przekazać tablicę do JS to poprzez JSON jest najwygodniej:
  1.  
  2. // $tablica = json_encode(array(1,'tarara',3,4,5));
  3. var tablica = '<?php echo $tablica; ?>';
  4. alert(tablica[1]);
scr1pt3r
Tak z ciekawości zapytam:
  1. var ids = new Array(0,1,2,3,4);
Co to jest te var i new ? Nie można dać $ids = array(...) ?
CuteOne
nie można - to jest JS nie PHP
adek-
CuteOne nie mogę tam kleić po prostu samej liczby np 5, bo to jest jakiś skrypt galerii pobrany z sieci i wymaga wpidania właśnie (0,1,2,...) próbowałem wstawić najpierw Twoje rozwiązanie, bo wydaje sie być bardziej wydajne i przy okazji nie przeplatało by php js php js, ale niestety nie działało w moim wykonaniu, a wiersze js i json są dla mnie zupełnie obce ;/

sada dokładnie o coś takiego mi chodziło, dziękuje bardzo! Tylko powiedz mi co oznacza tutaj to -1 ($i==$ilzdj-1)

PS jeśli i==$ilzdj-1 to do zmiennej $zmienna doklejasz $i $zmienna=$zmienna.$i; dodatkowo else doklejasz "," $zmienna=$zmienna.$i.','; tak? A czy nie dało by się to od razu w pierwszej linijce zrobić? Dlaczego to tak działa, prosił bym o tłumaczenie bo nie chce głupio kopiuj wklej.
PS w jednej nie działa jak dam od razu smile.gif

CuteOne
$ilezdj - określa ilość zdjęć
$i - to zmienna iteracji

Gdy chcesz aby w ostatnim "wpisie" do stringu nie znalazł się przecinek musisz porównać obie te wartości. Problem w tym, że $i nigdy nie będzie równe $ilezdj (mówi o tym warunek w pętli $i < $ilezdj) dlatego należy odjąć 1 od $ilezdj aby $i == ilości zdjęć. Nie wiem czy jasno to opisałem ;P
adek-
W zasadzie tak, faktycznie jeśli if($i==$ilzdj-1) to będzie się wykonywać $zmienna=$zmienna.$i.','; do czasu kiedy warunek nie zostanie spełniony czyli $i będzie spełniony to wykona się $zmienna=$zmienna.$i; kurcze czasem taki prosty kodzik, a trzeba się nad nim zastanowić. Dziękuję CuteOne, takie przykłady chyba pozwalają zrozumieć sposoby wykorzystania prostych rozwiązań.
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.