【问题标题】:PHP Double Variable Array IssuePHP 双变量数组问题
【发布时间】:2012-02-26 11:52:00
【问题描述】:

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

  • $people->一个
  • $people->两个
  • $people->三个
  • $people->四个

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

  • “二”=> 1
  • “四”=> 14

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

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

但是,这看起来不应该起作用,也没有我想要的那么干净。有没有更好的方法来处理这样的事情?

感谢您提供的任何帮助。

^^^

更新:

基本上,如果变量出现在数组中,我会尝试环绕变量。然后让它像原始值一样打印,除了包裹在它周围。

【问题讨论】:

  • 我已将顶部更新为没有两个 $value 集的位置。这对我来说很愚蠢。

标签: php arrays variables


【解决方案1】:
foreach ($arrayvariable as $key => $val) {    
    $value->$key = "<strong>" . $value->$key .  "</strong>";
}

我怀疑你的意思是

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

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

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

【讨论】:

  • 当我尝试类似 $people->$key = "" 时。 $人->$键。 "";它没有将该数据点设置为我可以使用原始 $people->two (使用新的 包装器)打印它的位置。
【解决方案2】:
$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) }

【讨论】:

    【解决方案3】:

    如果$obj 是您的对象,您可以这样做。

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

    【讨论】:

      猜你喜欢
      • 2011-08-04
      • 2014-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      • 2010-12-12
      相关资源
      最近更新 更多