当我不知道哪些将显示时,PHP回显变量

时间:2014-11-23 23:25:38

标签: php string variables

我有一个日历。用户选择他/她想要阻止的日期。在数据库中,它们将保存为具有假日名称的数组:

a:3:{i:0;s:6:"easter";i:1;s:12:"thanksgiving";i:2;s:9:"christmas";}

在文件中,我有每个日期的字符串:

$thanksgiving = "
[11, 27, 2014],
[11, 26, 2015],
[11, 24, 2016],
[11, 23, 2017],
[11, 22, 2018],
[11, 28, 2019],
[11, 26, 2020],
[11, 25, 2021],
[11, 24, 2022],
[11, 23, 2023]
";

$christmas = "
[12, 25, 2014],
[12, 25, 2015],
[12, 25, 2016],
[12, 25, 2017],
[12, 25, 2018],
[12, 25, 2019],
[12, 25, 2020],
[12, 25, 2021],
[12, 25, 2022],
[12, 25, 2023]
";

$fourthofjuly = "
[07, 04, 2015],
[07, 04, 2016],
[07, 04, 2017],
[07, 04, 2018],
[07, 04, 2019],
[07, 04, 2020],
[07, 04, 2021],
[07, 04, 2022],
[07, 04, 2023]
";

等...

$blocked_holidays is the array retrieved from the DB

When I try to echo it:
$blocked_string = implode(", $", $blocked_holidays);
$blocked_string = "[ $" . $blocked_string . " ]";

echo $blocked_string;

I get: [ $newyears, $thanksgiving, $christmas ]

如何让它回显字符串的值?

如果我将其更改为:

$$thanksgiving = "
[11, 27, 2014],
[11, 26, 2015],
[11, 24, 2016],
[11, 23, 2017],
[11, 22, 2018],
[11, 28, 2019],
[11, 26, 2020],
[11, 25, 2021],
[11, 24, 2022],
[11, 23, 2023]
";

$$christmas = "
[12, 25, 2014],
[12, 25, 2015],
[12, 25, 2016],
[12, 25, 2017],
[12, 25, 2018],
[12, 25, 2019],
[12, 25, 2020],
[12, 25, 2021],
[12, 25, 2022],
[12, 25, 2023]
";

$$fourthofjuly = "
[07, 04, 2015],
[07, 04, 2016],
[07, 04, 2017],
[07, 04, 2018],
[07, 04, 2019],
[07, 04, 2020],
[07, 04, 2021],
[07, 04, 2022],
[07, 04, 2023]
";

$blocked_string = implode(", $", $$blocked_holidays);
echo $$blocked_string;

它与日期相呼应,但仅来自最新变量,而不是所有变量。

1 个答案:

答案 0 :(得分:0)

也许这可以帮到你:

$blocked_holidays=array("a", "b", "c");
$a=1; $b=2; $c=3; //testing values

<击>

<击>
 $blocked_string=array();
 foreach ($blocked_holidays as $value) {
    array_push($blocked_string, ${$value});
 }
 echo '['.implode($blocked_string, ',').']';

<击>

修改

我想我得到了你想做的事情:

$blocked_string=implode(", $", $blocked_holidays);
$blocked_string=eval('echo "[$'.$blocked_string.']";');
echo $blocked_string;

//or simply
$blocked_string=eval('echo "[$'.implode(", $", $blocked_holidays).']";');