【问题标题】:Convert array value to variable将数组值转换为变量
【发布时间】:2015-03-02 13:24:57
【问题描述】:

您好,我正在尝试将数组的值转换为变量。

我有一个名为 X 的类,如下所示:

    class x{

        public static function getData(){
            $data = array(
                 "start" => '$id',
                 "end" => '$name'
            );
            return $data;
        }

}

getData 函数返回数组:

数组(大小=2)
'开始' => 字符串'$id' (长度=3)
'结束' => 字符串 '$name' (长度=5)

我在另一个类中有如下功能:

$id=10;
$name = "kheshav";    
$data = x::getData();
var_dump($data);

我想要将数组中的$id$name 值解析为其对应的变量。 所以最终结果如下:

数组(大小=2)
'开始' => int 10
'end' => 字符串'kheshav' (长度=7)

我尝试了以下代码但没有希望:

foreach ($data as $key => $value) {
    $data[$key] = eval("\$value =\"$value\";");

}

【问题讨论】:

  • 将你的价值观传递给函数
  • 我必须承认这个解决方案的工作,但问题是我可以有多个变量并将它们作为参数传递可能很忙

标签: php arrays variables


【解决方案1】:

传统的做法是将数据传递给函数:

class x{

    public static function getData($id,$name){
        $data = array(
             "start" => $id,
             "end" => $name
        );
        return $data;
    }

}


$id=10;
$name = "kheshav";    
$data = x::getData($id,$name);

【讨论】:

  • 我必须承认这是解决方案的工作,但问题是我可以有多个变量并将它们作为参数传递可能很忙
  • @KheshavSewnundun 这就是变量作用域的工作原理,并且有充分的理由。您可以打破变量范围的观点并使用global 关键字,但这不是一个好主意
  • 是的,确定它属于另一个范围,因此无法访问,但有没有办法循环遍历数组并将数组的值分配给其对应的变量。提前谢谢你
【解决方案2】:

您应该如下参数化您的getData() 函数:

    public static function getData($id, $name){
        $data = array(
             "start" => $id,
             "end" => $name
        );
        return $data;
    }

然后你可以这样称呼它:

$id=10;
$name = "kheshav";    
$data = x::getData($id, $name);

【讨论】:

  • 谢谢。这个解决方案正如我在其他 cmets 中提到的那样有效,但是,问题是我可以有多个变量。有没有办法通过循环遍历数组并将数组的值分配给其对应的变量。提前谢谢你
猜你喜欢
  • 1970-01-01
  • 2011-08-05
  • 1970-01-01
  • 2011-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多