Skip to content
View in the app

A better way to browse. Learn more.

Froxlor Forum

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

PHP Objekt/Array in String

Featured Replies

Hallo,

 

Ich arbeite an einem Script und bin grade ?berfragt.

 

Ich m?chte ein Script machen was in MySQL Gespeicherte K?rzel, per Array in den richtig zustand zur?ck setzt.

Leider bekomme ich immer irgendwelche Fehler.

 

Beispiel: "Catchable fatal error: Method TestClass::__toString() must return a string value in"

 

Benutzt wird mysql_fetch_row

 

$class = new Array_String($var[1]);
echo $class;
$fach = $faecher[$class];

class Array_String
{
   public $object;
   public function __construct($object)
   {
       $this->foo = $object;
   }

   public function __toString()
   {
       return $this->object;
   }
}

 

Ich bedanke mich jetzt schon mal, auch wenn ich wei? das ich im falschen bereich bin :(.

ich sehe nirgends in der klasse, dass $object gesetzt wird...du setzt $this->foo, was aber nirgends definiert ist. ich nehme an $this->object ist NULL und daher f?r PHP kein String...ansonsten versuch es doch mal mit

 

return (string)$this->object;

  • Author

Hallo,

 

Nein, das war nicht die l?sung. Aber mit "ich sehe nirgends in der klasse, dass $object gesetzt wird...du setzt $this->foo, was aber nirgends definiert ist" hattest du recht. hab ausversehentlich den fehler mitgenommen...

 

Der Code

 

 

while($var = mysql_fetch_object($query)) {	
$class = new Array_String( "$var->day" );
echo 'Tag: ' . $class; // Return:Tag: mon
if(isset($class)) { 
echo $days["mon"]; //Return: Montag
echo $days["$class"]; //Return: Notice: Undefined index: mon in ...
}

class Array_String
{
   protected $object;
   public function __construct($object)
   {
       $this->object = $object;
   }

   public function __toString()
   {
      return (string)$this->object;
   }
}

 

Und gerade dieses "Notice: Undefined index: mon in .." verstehe ich nicht :/.

Du bist echt ein bisschen lustig.

 

1) woher kommt jetzt die variable $days? wird nirgends gesetzt

2) WAS genau willst du denn da machen und was soll die Array_String klasse f?r dich machen? Denn im Moment sehe ich den Sinn nicht, dem constructor nen String zu ?bergeben und den wieder per __toString-function zur?ckzugeben.

3) $class = new Array_String( "$var->day" ); < wieso ?bergibst du den parameter in anf?hrungszeichen?

4) warum checkst du ob $class gesetzt ist, benutzt dann aber $days...

5) siehe 2, WAS willst du da ?berhaupt machen? vielleicht ist dir dann leichter zu helfen, wenn wir wissen, was eigentlich hinter der Idee mit der Array_String-Klasse steckt

  • Author

1. $days ist ein Array das ich abfragen m?chte.

 

$days sieht so aus

 

$days = array(

"mon" => "Montag",

"die" => "Dienstag",

"mit" => "Mittwoch",

"don" => "Donnerstag",

"fri" => "Freitag".

);

 

2. Ich hab ein MySQL Tabelle wo halt die ganzen Schl?sseln drin stehen. Die Schl?sseln sollen dann per Array vervollst?ndigt werden. Dadurch das sich dahinter ein Sprachsystem versteckt.

3. Weil er ohne " " eine Fehlermeldung anzeigt.

4. echo $days["$class"];

5. Das Wort "mon", was in der Tabelle gespeichert ist, soll per Array $days vervollst?ndigt werden. Leider bekomme ich halt die Fehlermeldung -> Notice: Undefined index: mon in ...

also...du hast irgendwelche "schl?ssel" in der DB die dir halt dann per array aus der Sprachdatei entsprechende bezeichnungen in der Sprache ausgeben sollen.

 

Wenn ich das so richtig verstanden habe verstehe ich deinen komplizierten Weg nicht.

 

Sagen wir du kriegst das K?rzel (wie auch immer) aus der Tabelle, dann hast du z.B.

 

$today = "mon";

 

So, jetzt hast du dein gegebenes Array $days, wo in der entsprechenden Sprache das Wort "Montag" hinterlegt ist, f?r den Index "mon". Also musst du doch nichts anderes machen au?er:

 

echo $days[$today];

 

und raus kommt "Montag".

  • Author

Ja, dann m?sste ich aber jeden tag selbst eintippen :D.

Das Problem ist aber, wenn das "mon" aus der Datenbank geladen wird, das es dann sp?ter eine fehlermeldung ausgibt.

Notice: Undefined index: mon in ...

lies bitte meinen vorherigen Post nochmal...ich glaube du hast es nicht wirklich verstanden. Oder du beschreibst bitte mal etwas genauer was du genau vorhast und wo welche Daten herkommen und wie diese verwendet werden sollen.

  • Author

Die Daten kommen aus einer Tabelle namens "news".

 

Aufbau

 

Tabelle
-> id  -> die aufruf id 
-> owner -> Die ID des Users
-> day -> Datums Tag
-> month -> Datums Monat
-> year -> Datums Jahr 	
-> second -> Sekunde
-> minute -> Minute
-> hour -> Stunde
-> ifchanged -> 1,3,5 - Log Script 
-> lang -> de
-> text -> der text halt
...

 

Nun m?chte ich das, dass K?rzel was in "day" gespeichert ist , mon, von PHP Vervollst?ndigt wird.

Das Problem ist aber , wenn man "day" abfragt und dann an dazugeh?rige Array einf?gt " $days[$day]; ", bekommt man den folgenden Fehler

 

Notice: Undefined index: mon in /usr/home/dominik/public_html/cms/libs/news.lib.php on line 55

 

Und genau auf dieser Linie steht $array[$day];

 

 

Mhh, hoffe das, dass nun genauer erkl?rt ist.

Dann w?rde ich mal gleich behaupten, dass $days in dem Kontext nicht definiert ist, in dem Fall, dass in news.lib.php eine klasse definiert ist.

 

Falls das der Fall ist:

1) entweder $days innerhalb der Klasse definieren, oder

2) die entsprechende language-file wo days definiert ist erst IN der klasse inkludieren, oder

3) $days als parameter dem klassen-contructor ?bergeben und es dann als klassen-variable verwenden

 

Beispiel 1)

 

class news {

   private $_days = array( 'mon' => 'Monday', 'tue' => 'Tuesdays', ...);
   ...
   public function returnDay($day) {
       return $this->_days[$day];
   }
}

 

 

Beispiel 2)

 

class news {

   public function returnDay($language = 'de', $day = 'mon') {

       // language datei inkludieren, welche
       // das array $days definiert
       include '/lib/'.$language.'.php';

       return $days[$day];
   }
}

 

Beispiel 3)

 


$days = array( 'mon' => 'Monday', 'tue' => 'Tuesdays', ...);

$news = new news($days);

class news {

   private $_days = array();

   public function __construct($days = array()) {
       $this->_days = $days;
   }

   public function returnDay($day = 'mon') {
       return $this->_days[$day];
   }
}

Ich bedanke mich jetzt schon mal, auch wenn ich wei? das ich im falschen bereich bin :(.

 

Ohne den Schreibfluss hier st?ren zu wollen, kann ich dir w?rmstens empfehlen, Hilfe in ##php (irc.freenode.net) oder in sonstigen PHP-Foren aufzusuchen. Ich kann hier nicht herauslesen das das Problem etwas mit Froxlor zu tun hat. ;)

das w?re meine n?chste Antwort gewesen arnold :)

  • Author

@d00p

 

Okay Danke :].

 

@arnoldB

 

hihi, ok werde ich mir merken ;).

Archived

This topic is now archived and is closed to further replies.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.