PHP双变量数组问题

时间:2012-02-03 21:35:59

标签: php arrays variables

我有一个对象形式的变量堆栈:

  • $以人为 - 酮
  • $以人为>二
  • $以人为>三
  • $以人为>四

我还有一组数据,如果适用,我想替换这些值。该数组具有以下内容:让我们调用数组$ stats

  • " 2" => 1
  • " 4" => 14

我一直试图完成的(这是使用双变量,如果在数组中,则将原始对象堆栈中的值替换为更新值。

foreach ($stats as $key => $value) {    
    $data = "people->" . $key;
    $$data = "<strong>" . $$data .  "</strong>";
}

但是,它看起来不应该起作用,并且不像我希望的那样干净。有没有更好的方法来处理这样的事情?

感谢您提供的任何帮助。

^^^

更新

基本上我试图包围变量,如果变量出现在数组中。并且,然后让它像原始值一样打印,除了缠绕它。

3 个答案:

答案 0 :(得分:1)

foreach ($arrayvariable as $key => $val) {    
    $value->$key = "<strong>" . $value->$key .  "</strong>";
}

我怀疑你的意思

$$data = "<strong>" . $value .  "</strong>";

在你的问题中,这将转化为

$value->$key = "<strong>" . $val .  "</strong>";

答案 1 :(得分:0)

$value        = new stdClass();
$value->one   = 1;
$value->two   = 2;
$value->three = 3;
$value->four  = 4;

$arr          = array();
$arr['one']   = 11;
$arr['four']  = 14;

foreach($value as $key => &$val){
    if(isset($arr[$key])) {
        $val = $arr[$key];
    }
}

var_dump($value); // object(stdClass)#1 (4) { ["one"]=> int(11) ["two"]=> int(2) ["three"]=> int(3) ["four"]=> &int(14) }

答案 2 :(得分:0)

如果$obj是您的对象,则可以执行此操作。

$key = 'four';
echo $obj->$key;