| 

.NET C# Java Javascript Exception

3
Hallo allerseits,

Wie muss der EVAL-Teil aussehen damit $hiwi den behandelten Wert enthält??

------------------------------------------------------------------------------
Anbei ein kleiner Testcode, zum selber probieren!
------------------------------------------------------------------------------
$hiwi = '';

function function1 ($var='')
{return $var.' hallo'; }

function function2 ($var='')
{ return $var.' und ballo'; }

// macht was ich will => "test und ballo hallo"
echo call_user_func('function1', call_user_func('function2', 'test'));

// macht leider nicht was ich will
eval("\$hiwi = \"call_user_func('function1', call_user_func('function2', 'test'))\";");

echo '<br>';
echo $hiwi;



Ich danke allen, schon im Vorraus für jeden Tipp
19.12.2011
ahib 31 2
2 Antworten
1
--------------------------------
Lösung ist:
--------------------------------

function function1 ($var=''){return $var.' hallo'; }
function function2 ($var=''){ return $var.' und ballo'; }

$funktion= "function1(function2(test))";
$command = "\$neu_data = ".$funktion;
eval("$command;");


echo $neu_data;


-----------------------------
War doch gar nicht so schwer,
nächstesmal ein bischen mehr einsatz bitte ;-)

euer Ahib^^
-----------------------------
20.12.2011
ahib 31 2
1
Schön das du dir die Antwort selbst erarbeiten konntest. Magst du mir verraten wofür genau du das brauchst? Ich kenne die Aufgabe nicht von der eval offensichtlich ein Teilproblem war/ist - Ich weiß nicht genau ob eval die beste Möglichkeit ist. Grüße
Nicolai Schönberg 21.12.2011
1
Die Idee ist ein Matching-Array zu haben, das aus CSV-Spalte, DB-Spalten und Exeption-Handling besteht.

Nutzen ist eine einfache Zuweisung von verschiedenen Spalten inkl. der eventuell notwendigen Value-Formatierung(Behandlung).

BSP:
$mapping= array("plz_a"   => array ("db_colum" => "zip" ), 
"preis_1" => array ("db_colum" => "grundpreis" ),
"preis_2" => array ("db_colum" => "arbeitspreis",
"custom_function" => "function1(function2(VALUE))"
);


Nachdem ich die CSV Zeilenweise durchlaufe soll folgendes passieren:

// for all csv-colums
foreach ($data as $key => $value)
{
// check for function-Handler for values
if( isset($mapping[$referees[$key]]['custom_function']) )
{
$funktion = str_replace('VALUE','"'.$value.'"',"$mapping_array[$referees[$key]]
['custom_function']);
$command = "\$neu_data = ".$funktion;
eval("$command;");
$hiwi[$key] = $neu_data;
}
// write orginal values
else{ $hiwi[$key] = $value; }
}
$return_data['rows_data'][] = $hiwi;


Vorteil:
Ich brauch einfach nur eine Schleife um alles DB-konform zu machen, egal was in der CSV steht
21.12.2011
ahib 31 2

Stelle deine Php-Frage jetzt!