Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Gültigkeit von Variablen (Anfänger)





Frage

Hallo, habe folgendes Problem: Ich definere ein globales array. In einer funktion befülle ich dieses, in einer anderes versuche ich es wieder auszulesen. Das Auslesen funktioniert aber nicht. Das Array ist leer. Ich verwende php 5.0.3 Hier ein vereinfachter Code: [code] <?php class Klasse { $arr = new array(); private function funktionEins() { $this->arr[ ] = "a"; $this->arr[ ] = "b"; $this->arr[ ] = "c"; } public function funktionZwei() { for($i = 0; $i<count($this->arr); $i++) { echo $this->arr[i]; } } } ?> [/code] Ich hoffe, mich kann jemand helfen. Gruß Tom

Antwort 1 von Nessus

Hi,

schaue Dir mal folgende Seite genau an, Du wirst deinen Fehler erkennen.
http://www.php-faq.de/q/q-arrays-mehrdimensional.html

HTH

Nessus

Antwort 2 von Ding280

Hallo,

nein, das tu ich nicht.
Kannst du mir das bitte erklären.

Gruß Tom

Antwort 3 von Nessus

Zitat:
nein, das tu ich nicht.


????
Zitat:
Kannst du mir das bitte erklären.


Nö, bei deiner mangelnden Eigeninitiative habe ich keinen Bock zu.

Nessus

Antwort 4 von Ding280

Hallo,

ich habs mir angeschaut und verstehs nicht.
Tut mir leid, wenn ich mich falsch ausgedrückt habe. Ich meinte damit, dass ich meinen Fehler nicht erkenne, nicht dass ich mir das nicht anschaue.

Gruß Tom

Antwort 5 von JanVer

@Nessus - Dein Link passt auch nicht zur Frage
Er hat ja nicht nach mehrdimensionalen Arrays gefragt.

@Tom:

Arbeite bislang nur mit PHP4. Private oder Public verwende ich nicht, aber wenn das bei Dir in PHP so läuft, dann kann PHP5 das wohl.

Zugriff auf globale Variablen scheint hier nicht das Problem zu sein. Offensichtlich ist für mich, dass Du angeben musst, welches Element des Arrays ausgegeben werden soll.

Hier ...
echo $this->arr;

müsste es lauten:
echo $this->arr[$i];

Antwort 6 von Nessus

@JanVer
Nein, er passt.

Nessus

Antwort 7 von Ding280

Hallo,

vielleicht liegt es auch an etwas anderem.

Hier mal der ganze Code


<?php

class Content
{
private $durchlaufen = false;
private $datei = "D:\web-docs\Bilder\";
private $standardDir = "D:\web-docs\Bilder";
private $site = "Bilder.php5";

private $ordner = array();
private $dateien = array();
private $bilder = array();

function __construct($dir)
{
$this->directory = $dir;
$this->check();
}

private function check()
{
if(!$this->durchlaufen)
{
$this->durchlaufen = true;
$this->listDirs();

$this->ordner = $this->mySort($ordner);
$this->dateien = $this->mySort($dateien);
$this->bilder = $this->mySort($bilder);
}
}

private function listDirs()
{
$openDir = opendir($this->datei);

while($temp=readdir($openDir))
{
$tempFile = $this->datei.$temp;
if ($tempFile != "." && $tempFile != "..")
{
if(is_dir($tempFile))
{
$this->ordner[ ] = $tempFile;
echo "<br />".$tempFile." ".count($this->ordner);
}
elseif(is_file($tempFile))
{
//TODO isFile;
}
}
}
}

public function setDatei($dat)
{
$this->datei = $dat;

if($this->datei == null)
{
$this->datei = $this->standard;
}
/*else
{
//TODO setDatei
}*/
}

public function getContent()
{
$this->check();
$content = "";

for($i = 0; i<count($this->ordner); $i++)
{
$content .= "<a href="".$this->site."?file=".$this->ordner + "">".$this->ordner."</a><br>
";
}
$content .= "<p>";

//TODO dateien;

return $content;
}



private function mySort($arr)
{
if(count($arr) != 0)
{
sort($arr);
}
return $arr;
}
}
?>


Gruß Tom

Antwort 8 von Ding280

Hallo,

kann mir denn wirklich niemand helfen?

Gruß Tom

Antwort 9 von Ding280

Vergesst es, mir wurde anderweitig geholfen.

Antwort 10 von Nessus

@Ding280

1. Hier ist niemand der nur auf deine Fragen wartet, das läuft neben bei, es kann also auch dauern.
2. Wie wurde dir geholfen? Das ist immer gut zu wissen, da hier dadurch ein recht interessantes Archiv entsteht.

Nessus

Antwort 11 von JanVer

Hi Tom,

bin gerade mal wieder reingeschneit.

Genau wie Nessus schon sagte
- man hilft, wenn man sich hier aufhält.
Nicht umgekehrt
- man hält sich hier auf und hilft.

Hab im übrigen Deine erste Fragestellung mal mit meiner Antwort hin eben getestet - und es lief.

Wo steckt nun das Problem in Deiner 2. Fragestelltung? Wird ein Fehler ausgeworfen oder kommt nichts an oder ist die Liste unsortiert?

Bitte verlange hier nicht, dass wir ein Programm auf Syntax hin untersuchen, daachd dann nachvollziehen, wofür es gedacht ist und letztendlich den Fehler analysieren.

Und wenn Du das Problem selber löst (oder ein anderer) dann schreib bitte auch dazu, was der Fehler war - es hilft vielleicht mal jemand anderem - (wie Nessus schon sagte).