[ w3bl0rd @ 20.09.2007. 18:45 ] @
evo sto mi treba...

$param=75;
function bla($parametar)
{
return ;
}

i sad ja pozovem
bla($param)

kako da u funkciji dobijem ime varijable koja je proslijeđena? znači ja bi trebao van dobiti $param... ili još teže...
$param[255][255]=0;
bla($param[255][255])
znaci ne zanima me vrijednost vec me zanima ovo $param[255][255] kako da to dobijem u funkciji?

ako naprimjer koristim funkciju get_defined_vars() to ce mi vratiti samo $parametar zato jer scope nije dobar... a i da ja to napravim izvan funkcije onda opet dobijem sve varijable a ne samo onu koja je proslijedena
[ milosijaa @ 21.09.2007. 00:30 ] @
Covece ti si prava konfuzija :)

1. sta ustvari prosledjujes u funkciju, niz, element niza, ili nesto trece....???
2. Da li funkcija treba da vrati neku vrednost ili samo da promeni vrednost neke promenljive koja se nalazi van nje????
3. Kazes ne interesije te vrednost elementa niza p[255][255] ??? PA sto ga onda prosledjujes u f-ju.

lista pitanja moze ici u nedogled ili sam ja glup ko ......

4. Interesuje te ime variable ciju si vrednost prosledio u f-ju. hmmmmmm??? Mozda ti ovo da neku ideju


$param = 4;

$a = 'param';

echo $a; //stampa param
echo $$a; //stampa 4
[ w3bl0rd @ 21.09.2007. 10:35 ] @
kužim ja sve to ali problem je opet kompleksniji meni treba ime varijable koja je prosijeđena funkciji... naravno treba mi i vrijednost ali to opće nije problem do sad sam to radio tak da sam funkciji prenio $ime_varijable,'$ime_varijable' ali cemu da se dupliram ak mozda mogu isprogramirati nest da to cini za mene... znam da nema te funkcije u oho-u koja ce to vratiti ali me zanimaju dal ima neko nekakvu ideju...

puno toga je tu u igri i sad stvarno problem je ovo i to e to ako se nemože nikako morat ću i dalje ovako...
[ stsung @ 21.09.2007. 12:19 ] @
Pozd.

Ne znam shta zaista zhelish da postignesh, ali bih morao da napomenem: ako ti zaista treba to shto si naveo, tvoj nachin programiranja nije dobar. Kratko i jasno.

Svako dobro.
[ japan @ 21.09.2007. 12:38 ] @
a sta bi trebalo da ti vrati ako ne prosledis varijablu, nego izraz? npr: bla(3+2)


definitivno si nesto gadno zakomplikovao bez potrebe ako ti treba ovako nesto...

[ dakipro @ 21.09.2007. 12:52 ] @
Ovo je meni jednom trebalo, da funkciji (npr. dump();) prosledis promenjivu $listOfUsers i da onda funkcija odstampa:
Code:
$listOfUsers = array(
... => ...
)


i tako n puta...
Probao sam par puta, pitao par ljudi koji znaju php mnogo dobro, i niko nije znao resenje. Iskreno, nisam bas preterano trazio, nije mi bilo vredno vremena, pa sam odustao... Ako ipak nadjes resenje (sumnjam da je php zamisljen da uopste ovo moze da vidi na nivou funkcija), postuj ga ovde. Mislim da bi moglo sa klasama da se nekako radi, sa dinamickimpromenjivama, ali mi nije odgovaralo da radim sa klasom, pa, kao sto rekoh, odustao sam...
[ w3bl0rd @ 21.09.2007. 13:20 ] @
aj ljudi ne pametujte vi o mojemu kodiranju jer nemate pojma što radim i kako nisam napisao dvije skripte u php-u pa će mi sada svaki govoriti da to je dobro to nije ja valjda znam za što mi to treba a zašto ne ako znaš odgovori ako neznaš šuti i ostani pametan.... i ja shvaćam da se ovo nemože kroz php ali sam mislio da neko ima neku ideju algoritam možda... mada teško mi je bilo shvatljio... ljudi nemojte komentirati ako neznate o čem se radi...

a sad da odgovorim na pametne postove....

izraz se sigurno nece prenijeti nego samo varijabla ili array....

ako nađem rješenje postovat ću ga ovdje
[ stsung @ 21.09.2007. 14:42 ] @
Druzhe, ni ja nisam napisao samo 2 skripte u PHP-u, upravljao sam ogromnim projektima koji su ukljuchivali i 30 ljudi i smatram da znam shta pricham. A upravo zato shto nisi napisao shta radish nisam mogao "da ostanem pametan", vec sam ti kulturno rekao i ponavljam, da tvoj nachin programiranja nije dobar, i time ti ipak neshto saopshtio, a to je da bi trebao da promenish pristup tome shto radish. A ako toliko smatrash da ti nabolje znash shta ti treba, onda izvoli pa uradi sam, nemoj pitati druge za pomoc i ochekivati da ce ti sada neko staviti sve na tacnu. Lichno ne poznajem sve programske jezike, ali to shto ti trazhish ne mozhe ni jedan za koji znam, pa sad razmisli da li je zaista moguce da je to shto radish tako specifichno da nikome na ovoj planeti nikada nije palo na pamet da je tako neshto potrebno u nekom programskom jeziku.

Svako dobro.
[ w3bl0rd @ 21.09.2007. 15:43 ] @
nije uvjek sve što liči loše loše... samo to ti mogu reći... ako si radio velike projekte i komplicirane onda i sam znaš da puno puta moraš iskoristiti neke stvari za koje nikad nisi mislio da ćeš ih trebati pa tako ja trebam to...
[ noviKorisnik @ 21.09.2007. 16:03 ] @
Ne može to što tražiš.

Kada prosleđuješ parametar funkciji, to je u opštem slučaju evaluirani izraz. Čak i ako prosleđuješ varijablu, u stvari prosleđuješ njenu kopiju, jer je to rezultat izraza dodele.
[ GxRxN @ 21.09.2007. 16:04 ] @
Code:

<?
function bla($parametar){
    $debug=debug_backtrace();
    $code=file($debug[0]["file"]);
    $line=$code[$debug[0]["line"]-1];
    $function=$debug[0]["function"];
    preg_match("|".$function." *\((.*)\) *\;$|", $line, $var);
    
    $out.="Funkcija $function je pozvana parametrom $var[1] ";
    $out.="cija je vrednost ".var_export($parametar, true).".</br>";
    echo $out;
}
$test[]=array("l","3","3","t");
bla(implode($test[0]));
bla(3+2);
?>
[ w3bl0rd @ 21.09.2007. 18:51 ] @
hmmm nije to to...
ako ja ovu funkciju pozovem ovako

$DDDD=5;
bla($DDDD);

vrati mi
Funkcija bla je pozvana parametrom cija je vrednost 5.</br>

a treba vratiti

Funkcija bla je pozvana parametrom $DDDD cija je vrednost 5.</br>

ipak Hvala ali ne šljaka...
[ japan @ 21.09.2007. 19:29 ] @
pa nista, imas tu ideju, imas

http://www.php.net/manual/en/language.variables.php#76245
http://www.php.net/manual/en/language.variables.php#49997

pa se poigraj
[ Br@nkoR @ 21.09.2007. 20:28 ] @
Citat:
w3bl0rd:
hmmm nije to to...
ako ja ovu funkciju pozovem ovako

$DDDD=5;
bla($DDDD);

vrati mi
Funkcija bla je pozvana parametrom cija je vrednost 5.</br>

a treba vratiti

Funkcija bla je pozvana parametrom $DDDD cija je vrednost 5.</br>

ipak Hvala ali ne šljaka...


odradi u funkciji echo $line; i videćeš da je greška u RegExp pattern-u.
[ w3bl0rd @ 21.09.2007. 23:34 ] @
da tu si potpuno u pravu to mi je dalo ideju sad i mogu sad dalje sam bez brige nastaviti svaka čast Hvala na ovome...
vidjet ću.. a za arraye onda isto algoritam pa ću sve znati... još jednom se zahvaljujem na ovome!
[ Mr. Bond @ 09.10.2007. 21:40 ] @
Khm a jel ti palo na pamet da prosledis dva parametra?

tipa:

$bleja = 10;

nekafunkcija($bleja, '$bleja') ? (ovo prvo ce da tretira kao int a ovo drugo kao string) ?

Naravno problem sa ovim je sto funkciju ne mozes koristiti u petljama itd... al bar dobijes to sto si hteo :D
[ dakipro @ 09.10.2007. 21:54 ] @
Evo malo gotovog koda, po uzoru na GxRxN-ov kod (to jest, samo je opravljen njegov kod ;) ).
Funkcija se koristi kao klasican dumper, samo sto pored ispise iz kog fajla, na kojoj liniji i sa kojim parametrima je pozvana, vrlo korisno ako ste juce negde zaboravili dump, pa sad ide ono lutanje kroz kod da se iskljuci.
Code:

function dump($data) {
    $old = $data;

    echo "<hr>";
    $debugBack = debug_backtrace();

    $code=file($debugBack[0]["file"]);
    $line=$code[$debugBack[0]["line"]-1];
    $function=$debugBack[0]["function"];
    preg_match("/([\x28])(.*)([\x29])/", $line, $var);
    echo "<pre style=\"background-color: #3300FF; color:white;\">";
    echo("<strong>$function (" . $var[2] . ") - File: </strong> " . $debugBack[0]['file'] . ", <strong>line:</strong> ". $debugBack[0]["line"] . "<br />");
    print_r($data);
    echo "</pre>";
    echo "<hr>";
}
[ sale83 @ 10.10.2007. 14:54 ] @
Jel ti oces ovo da postignes (Ali koliko vidim ovo je resenje vec dato)???

Code:

function dump($a, $b) {
  global $parametri;
  echo "Funkciji su prosledjen sledeci paramteri:<br>";
  foreach ($parametri as $v){
              $p = explode (":",$v);
      echo "Parameter: ".$p[0]. " Vrednost:" .$p[1]."<br>";
      }
}

$parm1 = 1;
$param[255][255] = 2;

// Registruj Parametre koje prosledjujes funkciji 
$parametri[0] = '$parm1:'.$parm1;
$parametri[1] = '$param[255][255]:'.$param[255][255];


dump($parm1,$parm2);
/*

Funkciji su prosledjen sledeci paramteri:
Parameter: $parm1 Vrednost:1
Parameter: $param[255][255] Vrednost:2

*/
[ Mr. Bond @ 11.10.2007. 23:16 ] @
Code:

<?php
//considering 2 arrays
$foo1 = array ("a", "b", "c");
$foo2 = array ("d", "e", "f");

//and 2 variables that hold integers
$num = 1;
$cell = 2;

echo ${foo.$num}[$cell]; // outputs "c"

$num = 2;
$cell = 0;

echo ${foo.$num}[$cell]; // outputs "d"
?>
lucas dot karisny at linuxmail dot org
14-Feb-2005 04:42
Here's a function to get the name of a given variable.  Explanation and examples below.

<?php
  function vname(&$var, $scope=false, $prefix='unique', $suffix='value')
  {
    if($scope) $vals = $scope;
    else      $vals = $GLOBALS;
    $old = $var;
    $var = $new = $prefix.rand().$suffix;
    $vname = FALSE;
    foreach($vals as $key => $val) {
      if($val === $new) $vname = $key;
    }
    $var = $old;
    return $vname;
  }
?>

Explanation:

The problem with figuring out what value is what key in that variables scope is that several variables might have the same value.  To remedy this, the variable is passed by reference and its value is then modified to a random value to make sure there will be a unique match.  Then we loop through the scope the variable is contained in and when there is a match of our modified value, we can grab the correct key.

Examples:

1.  Use of a variable contained in the global scope (default):
<?php
  $my_global_variable = "My global string.";
  echo vname($my_global_variable); // Outputs:  my_global_variable
?>

2.  Use of a local variable:
<?php
  function my_local_func()
  {
    $my_local_variable = "My local string.";
    return vname($my_local_variable, get_defined_vars());
  }
  echo my_local_func(); // Outputs: my_local_variable
?>

3.  Use of an object property:
<?php
  class myclass
  {
    public function __constructor()
    {
      $this->my_object_property = "My object property  string.";
    }
  }
  $obj = new myclass;
  echo vname($obj->my_object_property, $obj); // Outputs: my_object_property
?>


Preuzeto sa php.net