Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:嵌套变量问题_Php_Variables - Fatal编程技术网

PHP:嵌套变量问题

PHP:嵌套变量问题,php,variables,Php,Variables,很抱歉,这个特别模糊的标题,我不确定这里使用的确切术语 我编写了一些PHP来存储当前年份的一个变量,然后是另一个变量来存储当前年份减去4(四年前)。作为说明,我确实希望它是全年的,因此附加1月1日 // Get current date $date = date_create('now'); // Store two digit version of current year $yearnow = date_format($date, 'y') . "-01-01"; // Reduce t

很抱歉,这个特别模糊的标题,我不确定这里使用的确切术语

我编写了一些PHP来存储当前年份的一个变量,然后是另一个变量来存储当前年份减去4(四年前)。作为说明,我确实希望它是全年的,因此附加1月1日

// Get current date
$date = date_create('now');

// Store two digit version of current year
$yearnow = date_format($date, 'y') . "-01-01";

// Reduce the year count by two
$yearminusfour = $yearnow - 4 . "-01-01";
没问题,不过也许有更有效的方法。然而,我用它动态地抓取WordPress过去四年的帖子

这行代码负责返回正确的帖子,在静态时工作正常:

$where .= " AND post_date >= '2010-01-01' AND post_date < '2014-01-01'";
$where.=“和发布日期>='2010-01-01'和发布日期<'2014-01-01'”;
我正在努力将两者结合起来,使之充满活力。我试过:

$where .= " AND post_date >= $yearnow AND post_date < $yearminusfour";
$where .= " AND post_date >= '.$yearnow.' AND post_date < '.$yearminusfour.'";
$where .= " AND post_date >= '".$twentyten."' AND post_date < '".$yearminusfour."'";
$where.=“和发布日期>=$earHow和发布日期<$yearminusfour”;
$where.=“和post_date>=”.$earnow.“和post_date<.$yearminusfour.”;
$where.=“和发布日期>=”、“$twentyten.”和发布日期<”、“$yearminusfour.”;
我被困住了,我肯定我走得太慢了

$where .= " AND post_date >= '$yearnow' AND post_date < '$yearminusfour'";
$where.=“和发布日期>=”、“$twentyten.”和发布日期<”、“$yearminusfour.”;
这将起作用,但您必须反向比较:)

$where.=“和发布日期=””$yearminusfour.“;

此外,您应该使用准备好的语句。建议您在使用用户输入时使用此选项。

我认为您搜索的范围不可行。根据您发布的代码,它搜索>=当前年份且小于4年前日期的帖子。因此,您需要更改比较

$where .= " AND post_date <= '".$twentyten."' AND post_date > '".$yearminusfour."'";
$where.=“和发布日期”。$yearminusfour.”;

$earnow类似于
2015-01-01
。那么,
$dearneow-4
将是什么?
无论如何,您可以使用(您已经使用了别名date_create)执行必要的:


我建议在mysql的条件(我假设您使用mysql)和日期减法之间使用

看起来是这样的:

$where .= " AND post_date BETWEEN '$yearnow' AND '$yearnow' - INTERVAL 4 YEAR";
怎么样

$yearStart = date('Y-m-d', strtotime('Jan 01'));
$yearEnd = date('Y-m-d',strtotime("$yearStart -4 year")); 

$where .=  "AND (date_field BETWEEN '".$yearStart."' AND '".$yearEnd."')";
1) 要获得约会,请尝试:

$currentdate = date('Y-m-d',time());
$yearminus4 = date('Y-m-d',strtotime("-4 years", time()));
2) 我认为sql语句中的选择条件是向后的

$where = " AND post_date >= '" . $yearminus4 . "'  
           AND post_date <= '" . $currentdate . "'";
$where=“和发布日期>=”$第4年。"'  

在日期后,您在那里放置了连接点:
但没有用:
”(例如,
”。
)停止字符串。第三个在语法上是好的($twenteen应该是$earnow,不是吗?)。前两个是错误的。日期需要用单引号括起来,第二个是不必要的点。
。或者你知道,你可以只阅读PDO和参数绑定。WordPress+MySQL几乎是给定的…几乎;-)还原:更改回以前的版本。反转:切换顺序。我认为反转是正确的,因为OP没有不同首先,我的教训是:不要相信google translate,总是查字典……)为什么不使用DATE_SUBAh之类的SQL函数呢?你完全正确,我修改了一些代码,但现在没有任何意义。我以前在添加-01-01之前的一年中就有每个变量,后来又添加了日期和月份。试图简化,但显然弄糟了!我会给你一个答案。Royal Bg,因为wordpress不必与MySQL一起使用,而且影响还不足以让我偏离实际问题;-)这似乎对我不起作用,尽管我现在想知道我的问题是否更深?但是,我的原始代码可以工作如果我使用静态日期,也可以:$where.=“和post_date>='2010-01-01'和post_date<'2014-01-01'”;
WHERE x BETWEEN 2015-01-01 AND 2011-01-01
$where .= " AND post_date BETWEEN '$yearnow' AND '$yearnow' - INTERVAL 4 YEAR";
$yearStart = date('Y-m-d', strtotime('Jan 01'));
$yearEnd = date('Y-m-d',strtotime("$yearStart -4 year")); 

$where .=  "AND (date_field BETWEEN '".$yearStart."' AND '".$yearEnd."')";
$currentdate = date('Y-m-d',time());
$yearminus4 = date('Y-m-d',strtotime("-4 years", time()));
$where = " AND post_date >= '" . $yearminus4 . "'  
           AND post_date <= '" . $currentdate . "'";