넘겨온 변수의 이름을 추출하는 함수..

값이아니라 변수명입니다~

 Here s a function to get the name of a given variable.  Explanation and examples below.

   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
 ? >
 =>2줄로
 < ?php
 function var_name(&$var, $scope=0)
 {
     $old = $var;
     if (($key = array_search($var = 'unique'.rand().'value', !$scope ? $GLOBALS : $scope)) && $var = $old) return $key;
 }
 ? >

[이 게시물은 관리자님에 의해 2011-10-31 17:16:08 PHP & HTML에서 이동 됨]
|

댓글 1개

찾다찾다 여기서 찾게 되었네요. 정말 감사합니다.
그러고보니 딱 일년전 글이군요 ㅎ
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

+
제목 글쓴이 날짜 조회
16년 전 조회 2,299
16년 전 조회 2,956
16년 전 조회 1,837
16년 전 조회 3,682
16년 전 조회 4,529
16년 전 조회 3,181
16년 전 조회 2,435
16년 전 조회 2,532
16년 전 조회 2,765
16년 전 조회 2,264
16년 전 조회 5,608
16년 전 조회 3,453
16년 전 조회 1,448
16년 전 조회 1,796
16년 전 조회 5,160
16년 전 조회 2,400
16년 전 조회 3,494
16년 전 조회 2,741
16년 전 조회 1,646
16년 전 조회 5,451
16년 전 조회 2,559
16년 전 조회 6,053
16년 전 조회 2,027
16년 전 조회 4,107
16년 전 조회 3,121
16년 전 조회 2,307
16년 전 조회 2,323
16년 전 조회 4,471
16년 전 조회 3,382
16년 전 조회 2,914
16년 전 조회 3,056
16년 전 조회 2,178
16년 전 조회 1,861
16년 전 조회 1,776
16년 전 조회 1,495
16년 전 조회 1,761
16년 전 조회 1,989
16년 전 조회 1,687
16년 전 조회 4,923
16년 전 조회 3,917
16년 전 조회 1,880
16년 전 조회 1,627
16년 전 조회 2,368
16년 전 조회 4,609
16년 전 조회 3,631
16년 전 조회 2,674
16년 전 조회 4,417
16년 전 조회 3,279
16년 전 조회 1,446
16년 전 조회 1,460
16년 전 조회 2,135
16년 전 조회 1,971
16년 전 조회 2,653
16년 전 조회 2,321
16년 전 조회 1,457
16년 전 조회 4,477
16년 전 조회 1,568
16년 전 조회 1,868
16년 전 조회 2,293
16년 전 조회 3,929
16년 전 조회 2,833
16년 전 조회 1,575
16년 전 조회 4,110
16년 전 조회 1,477
16년 전 조회 1,667
16년 전 조회 1,333
16년 전 조회 1,803
16년 전 조회 1,708
16년 전 조회 1,715
16년 전 조회 1,501
16년 전 조회 2,268
16년 전 조회 1,895
16년 전 조회 2,053
16년 전 조회 2,282
16년 전 조회 1,564
16년 전 조회 2,394
16년 전 조회 2,338
16년 전 조회 4,610
16년 전 조회 1,382
16년 전 조회 1,133
16년 전 조회 2,089
16년 전 조회 2,065
16년 전 조회 1,599
16년 전 조회 2,132
16년 전 조회 2,365
16년 전 조회 1,479
16년 전 조회 1,820
16년 전 조회 2,006
16년 전 조회 1,101
16년 전 조회 1,780
16년 전 조회 1,485
16년 전 조회 1,990
16년 전 조회 1,403
16년 전 조회 2,293
16년 전 조회 1,981
16년 전 조회 5,959
16년 전 조회 2,001
16년 전 조회 3,770
16년 전 조회 1,548
16년 전 조회 1,833