php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Zugriff per Elementnamen nicht per Parameter möglich?


 
HolmHansen
19-07-2011, 18:46 
 
Hallo zusammen,

ich habe mich jetzt seit ein paar Stunden damit herumgeschlagen und gebe bald auf.

Ich habe eine Funktion test, die aus einer Datenbank ein paar Felder holt. Das klappt. Nun möchte ich auf einzelne Felder zugreifen, je nach Bedarf.
Dazu übergebe ich den Namen des Feldes als String an die Funktion.
Mit dem übergebenen Namen kann ich aber leider nicht auf das Feld zugreifen (siehe rote Zeilen), wenn ich nun jedoch den identischen Feldnamen an eine lokale Variable las String übergebe und damit aufrufe, klappt das (grüne Zeilen), aber warum? Dieses Verhalten ralle ich nicht wirklich.

Es liegt auch nicht daran, das fieldName vllt. leer ist. Im Code ist zu sehen, ich gebe es aus und da steht definitiv "visit" drin.
Ich bin ratos, wer kann mir helfen?


public function test( $fieldName )
{
global $my;

$database = &JFactory::getDBO();
$uid = $user->id;

// Parameter des Benutzers holen
$query = 'SELECT * FROM #__tables where user_id = '.$uid;

$database->setQuery( $query );
$rows = $database->LoadObjectList();
foreach( $array as $row )
{
// folgendes funktioniert
$str = "visit";
echo( $row->{$str} );

// folgendes funktioniert nicht mehr selbst wenn in fieldName "visit" steht
echo( $fieldName ); // ist NICHT leer, enthält "visit"!
echo( $row->{$fieldName} );
}
}
Also in C++ hätte ich ja jetzt gesagt, geht so nicht weil early and late binding, aber in PHP?

Die Daten liege wie folgt in $row an:


stdClass Object ( [id] => 64 [visit] => 1 [privvisitors] => Freunde [privguestbook] => Alle )

 
HolmHansen
19-07-2011, 22:39 
 
Hallo zusammen,

ich habe mich jetzt seit ein paar Stunden damit herumgeschlagen und gebe bald auf.

Ich habe eine Funktion test, die aus einer Datenbank ein paar Felder holt. Das klappt. Nun möchte ich auf einzelne Felder zugreifen, je nach Bedarf.
Dazu übergebe ich den Namen des Feldes als String an die Funktion.
Mit dem übergebenen Namen kann ich aber leider nicht auf das Feld zugreifen (siehe rote Zeilen), wenn ich nun jedoch den identischen Feldnamen an eine lokale Variable las String übergebe und damit aufrufe, klappt das (grüne Zeilen), aber warum? Dieses Verhalten ralle ich nicht wirklich.

Es liegt auch nicht daran, das fieldName vllt. leer ist. Im Code ist zu sehen, ich gebe es aus und da steht definitiv "visit" drin.
Ich bin ratos, wer kann mir helfen?


public function test( $fieldName )
{
global $my;

$database = &JFactory::getDBO();
$uid = $user->id;

// Parameter des Benutzers holen
$query = 'SELECT * FROM #__tables where user_id = '.$uid;

$database->setQuery( $query );
$rows = $database->LoadObjectList();
foreach( $array as $row )
{
// folgendes funktioniert
$str = "visit";
echo( $row->{$str} );

// folgendes funktioniert nicht mehr selbst wenn in fieldName "visit" steht
echo( $fieldName ); // ist NICHT leer, enthält "visit"!
echo( $row->{$fieldName} );
}
}
Also in C++ hätte ich ja jetzt gesagt, geht so nicht weil early and late binding, aber in PHP?

Die Daten liege wie folgt in $row an:


stdClass Object ( [id] => 64 [visit] => 1 [privvisitors] => Freunde [privguestbook] => Alle )

Edit:
Hat sich erledigt!
Hab den Code noch mal lokal debuggt und an anderen Stellen Fehler gehabt. Jetzt tuts wie gewünscht.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:08 Uhr.