php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.10.2004, 18:54  
Gast
 
Beiträge: n/a
Standard Array: Nur einen bestimmten Teil ausgeben

Moin,

ich lesen Dateinamen in ein Array ein und möchte dann nur bestimmte Namen wieder ausgeben (Ist ein Bildergallerie Script, alle Bilder werden auf mehrer Seite verteilt und dann sollen nur die Bilder der aktuellen Seite angezeigt werden).
Leider schaffe ich es nicht, in irgendeiner Weise einzelne Datensätze aus dem Array auszugeben, immer nur alle mit

Code:
  foreach($arr as $key => $value)
,
Code:
echo $arr[12];
wie ich es aus Pascal kenne geht gar nicht!
Ich hab es schon mit
Code:
$prev_pics = array_slice($arr, $limitlower);
versucht, aber da bekomme ich nur die Fehlermeldung, dass ich doch bitte nen Array einlesen soll - was ich meiner Meinung nach aber tue!!!

Was läuft da falsch?
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 23.10.2004, 13:54  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Code:
<pre>
<?php
$pic_files = array('bild 1', 'bild 2', 'bild 3', 'bild 4');
$offset = 1;
$lenght = 2;
$pics_on_this_page = array_slice($pic_files, $offset, $lenght);
print_r($pics_on_this_page);
echo "\n";
echo $pics_on_this_page[0];
echo "\n";
echo $pics_on_this_page[1];
echo "\n";
foreach ($pics_on_this_page as $pic_file) {
 
    echo $pic_file;
    echo "\n";
}
?>
</pre>
Wahrscheinlich hast du nur ein Fehler in deinem Array...

Basti
Basti ist offline  
Alt 24.10.2004, 18:49  
Gast
 
Beiträge: n/a
Standard

HI,

ich lese meinen Array folgendermaßen ein:

Code:
 while ($file = readdir ($verz)) 
  { 

	 if($file != "." && $file != ".." && $file != $filename) 
     { 
      array_push ($linkl, "$file"); // Der Dateiname wird in den Array $linkl geschrieben 
     } 
    }
   }
Wenn ich array_slice anwende (wie gepostet), bekomme ich die Fehlermeldung:
Warning: array_slice(): The first argument should be an array in ./gallerie.php on line 154
Genauso beim foreach,
Warning: Invalid argument supplied for foreach() in ./gallerie.php on line 157

Ohne das array_slice kann ich aber alle Werte des Array mit foreach ausgeben... Kann es am array_push liegen???
 
Alt 25.10.2004, 11:19  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Hast du $link1 bzw. $arr denn nicht als Array deklariert? In dem Fall solltest du dein Error Reporting Level hochsetzen, dann passieren solche Fehler i.d.R. nicht.

Gib dir den Inhalt der entsprechenden Vars einfach mal mit print_r() oder var_dump() aus.

Noch was:

Es sollte heißen:
Code:
while (true == ($file = readdir($dir))) {
...denn sonst bricht die Schleife ab, falls eine Datei z.B. den Namen '0' trägt.

Basti
Basti ist offline  
Alt 25.10.2004, 11:28  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

Was genau das angbliche Array ist kannst Du mit var_dump() oder print_r() ausgeben lassen.
An array_push() dürfte es nicht liegen, wobei ich mir angewöhnt habe, Variablen immer erst als leere Arrays zu definieren, bevor ich sie als solche benutze.
Ist auch nötig, damit es auf E_NOTICE nicht zu hässlichen Meldungen kommt.

<?php
$arr = array();

array_push($arr, "bla");
array_push($arr, "blubb");

echo "<pre>";
var_dump($arr);
echo "</pre>";
?>
__________________
mod = master of disaster
Waq ist offline  
Alt 25.10.2004, 11:50  
Gast
 
Beiträge: n/a
Standard

Hi!

Danke für die Antworten! Mit var_dump bekomme ich als Ausgabe NULL!!! Ich habe den Array mit
Code:
  $linkl = array ();
deklariert, hatte ich nur nicht mit reingeschrieben...

Das NULL bekomme ich einmal, wenn ich den vollen array drin habe ($link1) und dann auch nochmal, wenn ich ihn mit array_slice bearbeitet habe...

Fehlermeldung ist immer noch: First Argument should be an Array...
 
Alt 25.10.2004, 11:57  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

null bedeutet, dass die Variable nicht nur leer, sondern gar nicht definiert ist.

Du bist da irgendwo anders durcheinander gekommen. Vielleicht die Variable in einer Funktion benutzt, ohne sie an die Funktion zu übergeben?

Dass Arrays an sich funktionieren sollte Dir das Beispielscript ja zeigen.
__________________
mod = master of disaster
Waq ist offline  
Alt 25.10.2004, 12:06  
Gast
 
Beiträge: n/a
Standard

Hi,

auch wenn ich direkt nach dem einlesen mit array_push den Array mit var_dump ausgebe, zeigt er auch überall null an!
Aber trotzdem funktioniert es, wenn ich den gesamten Array mit foreach ausgebe!

Code:
  foreach($linkl as $key => $value)
Das Einzige, was ich auf dem Weg zwischen einlesen und Ausgabe mache, ich count($link1) und sort($link1)...

Was ist denn da im Busch?
 
Alt 25.10.2004, 12:14  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

Da ist irgendwas im Busch, was Du uns nicht verrätst. Du hast den Code vor der Nase, wir können hier sehr frei spekulieren, woran es denn liegen könnte, aber helfen wird das nur bedingt.
Und bitte keine Schnipsel, sondern ein lauffähiges script (kann gekürzt sein, aber lauffähig!), wie mein Beispiel auch.

Das einzige, was mir spekulierenderweise noch einfällt, ist das hier:
Hast Du sowas wie
$arr = sort($arr);
statt
sort($arr);
gemacht?
__________________
mod = master of disaster
Waq ist offline  
Alt 25.10.2004, 12:23  
Gast
 
Beiträge: n/a
Standard

Hi,

nein, ich habe nur sort($arr) gemacht... Hier ist das Script in der Original Version:

Code:
  // Verzeichnis wird geöffnet 
  $verz=opendir($folder_scr); 

  // Ein Array wird erstellt in dem nachher die Dateien gespeichert werden 
  $linkl = array (); 

  while(true == ($file = readdir ($verz))) 
  { 

//Alle Dateien in den Array einlesen
    $jpegtrue = pathinfo($file);
	if($jpegtrue['extension'] == "jpg") 
	{
    //Damit "." und ".." nicht ins Array geschrieben werden, werden sie ausgenommen. 	
	 if($file != "." && $file != ".." && $file != $filename) 
     { 
      array_push ($linkl, "$file"); // Der Dateiname wird in den Array $linkl geschrieben 
	 } 
    }
   } 

  // Anzahl der Dateien im Ordner == Anzahl der Einträge im Array 
  $anzahl = count($linkl); 

  // Array wird nach Alphabet sortiert 
  sort ($linkl); 


####################################################################################################
  foreach($linkl as $key => $value) 
  { 

  //Thumb schon vorhanden? Wenn nein, wird er erstellt
    if(!file_exists($des_src."/".$value)) 
    { 
      // erstelle ein thumb (Funktion ist weiter oben deklariert)
      mkthumb($value, $thumbx, $thumby, $folder_scr, $des_src); 
    } 
  //Ausgabe der Thumbs/Des Arrays: 
  echo "<td>";
  echo "<a href=\"index.php?action=showpic&amp;folder=".$folder_scr."/&amp;pic=".$value."&amp;event=".$fileplace."\">\n";
  echo "[img].$des_src.[/img]</a>\n";
  echo "
".round((filesize($folder_scr."/".$value)/1024),2)."kb";
  $j++;
  echo "</td>";
	$i++;
	if($i > $cols)
	{
	echo "</tr>\n<tr>\n";
	$i = 1;
	}
  } 

  closedir($verz);
Unterhalb der ### Zeile kommt die Ausgabe, die wollte ich wie folgt ändern:

Code:
//Schleife, jedes Bild wird bearbeitet.
//Bilder pro Seite, 4 Spalten, 6 Zeilen
$perpage = 24;
$pages = ceil($anzahl/$perpage);
echo $anzahl." Bilder auf ".$pages." Seiten 
\n";

if(!isset($pagenum) OR ($pagenum == 0) OR empty($pagenum)):$pagenum = 1; endif;
echo $pagenum;

$limitlower = ($pagenum-1) * ($perpage+1);
$limitupper = $limitlower + ($perpage);
echo " ".$limitlower." ";
echo $limitupper;

var_dump($link1);
$pics_page = array_slice($link1, 1, 5);
var_dump($pics_page);
Also die Geschichte mit dem Bilder auf die Seiten vertielen, ist nur die Berechnung, ohne Ausgabe...
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Soapfault: Undefined Property Argi PHP-Fortgeschrittene 0 28.07.2008 11:17
array richtig sortieren, dann ausgeben Heart PHP Tipps 2006 5 28.04.2006 20:23
In einem Array nach bestimmten Werten suchen PHP-Fortgeschrittene 3 18.02.2006 18:58
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
Array Ausgabe zu einem bestimmten Datum PHP Tipps 2005 5 01.06.2005 17:15
Array füllen und ausgeben PHP Tipps 2005 6 24.02.2005 14:33
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31
Abfrage mit id aus anderer Tabelle suter PHP Tipps 2004-2 15 16.12.2004 14:25
[Erledigt] Array ausgeben PHP Tipps 2004-2 4 05.12.2004 00:53

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php array teil, php teil array, php teil eines arrays, php teilarray, php array zeilenweise ausgeben, php teil von array, php array teil ausgeben, php teil aus array, teilarray php, teil eines arrays php, teil array php, php teil eines array, teile eines arrays php, http://www.php.de/php-tipps-2004/11010-array-nur-einen-bestimmten-teil-ausgeben.html, array teil php, php teil aus array lesen, php teil eines arrays ausgeben, teile eines arrays ausgeben php, php teil eines array ausgeben, php teile eines arrays

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:23 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.