Слияние переменной PHP - PullRequest
0 голосов
/ 18 июня 2011

я запутался, что ...

как пример:

$Q1 = "hello";
$Q2 = "world";
$Q3 = "StackOverflow";

$i = 1;

while($i < 3) {
  $a = "$Q".$i; //I think this is wrong.    
  echo $a; // i tried ${$a} doesn't work =/

  $i++;
}

затем формат вывода:

$Q1
$Q2
$Q3

но нет вывода, подобного этому: hello worldStackOverflow

Я хочу, чтобы $Q + $i стал $Q1 и ответил: "привет" ...

Ответы [ 7 ]

9 голосов
/ 18 июня 2011
$varName = 'Q'.$i;
$a .= $$varName; 

Или просто

echo $$varName . "<br>\n";
3 голосов
/ 18 июня 2011

Чтобы создать переменную переменной, используйте:

$a = ${'Q'.$i};
1 голос
/ 18 июня 2011

PHP поддерживает имена переменных переменных, обозначенные $$. Это будет делать то, что вы хотите.

$qvar = 'Q'.$i;
$a = $$qvar;

Однако это считается очень плохой практикой - почти так же плохо, как использование eval() (и по аналогичным причинам).

Правильный ответ: создать массив из $Q и ссылаться на элементы массива;

$Q = array(
        "hello",
        "world",
        "StackOverflow")

$a = $Q[0] . $Q[1] . $Q[2];
1 голос
/ 18 июня 2011

То, что вы делаете там, просто печатаете строки '$ Q1', '$ Q2' и '$ Q3'.В PHP вы используете динамические имена переменных следующим образом:

<?php
$Q1 = 'hello';
$Q2 = 'world';
$Q3 = 'StackOverflow';
for ($i = 1; $i <= 3; $i++) {
    echo ${'Q' . $i};
}
?>
1 голос
/ 18 июня 2011

echo $Q1 . $Q2 . $Q3; выведет то, что вы ищете.

В качестве альтернативы, вы можете сделать это:

$a = '';

for($i = 1; $i <= 3; $i++)
  $a .= ${'Q' . $i};

echo $a;
0 голосов
/ 18 июня 2011
$Q = array("hello", "world", "StackOverflow");
foreach($Q as $w) {
    echo $w;
}

Если вы не можете сделать что-то подобное, вам нужно будет использовать динамические переменные:

$var = 'Q' . $i;
echo $var; 
0 голосов
/ 18 июня 2011

Да. Когда у вас есть строки в двойных кавычках, и вы помещаете в них знак доллара и что-то еще, он интерпретирует его как переменную. (это также избегает таких вещей, как \n)

Пример

$test = "hi";
echo "$test world"; //This outputs hi world

В вашем случае $Q не существует. Поведение по умолчанию PHP игнорирует эту ошибку и просто ничего не выдает. Вот почему рекомендуется сообщать обо всех проблемах с вашим кодом. Проверять, выписываться http://php.net/manual/en/function.error-reporting.php для деталей.

Решением вашей проблемы будет использование строк в одинарных кавычках. сделать $a = '$Q'.$i;

...