Проблема с двойной переменной в PHP - PullRequest
1 голос
/ 04 февраля 2012

У меня есть стек переменных в форме объекта:

  • $ people-> one
  • $ people-> two
  • $ people-> three
  • $ people-> four

У меня также есть массив данных, которые, когда это применимо, я хочу заменить эти значения.Массив имеет такие вещи, как: Давайте вызовем массив $ stats

  • "two" => 1
  • "four" => 14

Что япытались выполнить (и это было с использованием двойной переменной, это заменить значение в исходном стеке объектов на обновленное значение, если в массиве.

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

Но это просто не похоже наэто должно работать, и не так чисто, как хотелось бы. Есть ли лучший способ справиться с чем-то вроде этого?

Спасибо за любую помощь, которая может быть предоставлена.

^^^

Обновление:

В основном я пытаюсь обернуть переменную, если переменная отображается в массиве. И затем распечатать ее как исходное значение, за исключением случая, когда обернута переменнаяэто.

Ответы [ 3 ]

1 голос
/ 04 февраля 2012
foreach ($arrayvariable as $key => $val) {    
    $value->$key = "<strong>" . $value->$key .  "</strong>";
}

Я подозреваю, что вы имели в виду

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

в вашем вопросе, что бы перевести на

$value->$key = "<strong>" . $val .  "</strong>";
0 голосов
/ 04 февраля 2012

Если $obj является вашим объектом, вы можете сделать это.

$key = 'four';
echo $obj->$key;
0 голосов
/ 04 февраля 2012
$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) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...