我不知道我是否能够以可能被理解的方式提出我的问题,但我会尝试。
我有这个PHP代码,我感兴趣的是“起飞”while循环中的最后一个变量!!
$c= "2040-01-01 12:00:00";
$d= "2040-01-02 12:00:00";
$date_3 = date("Y-m-d g:i:s", strtotime("$c"));
$date_4 = date("Y-m-d g:i:s", strtotime("$d"));
$results = array($date_1);
$i = $date_3;
while ($i <= $date_4) {
$i = date("Y-m-d g:i:s", strtotime($i));
array_push($results, $i);
$k= $i . "\n";
$chunks = str_split($k, 19);
$nexstring = join('\')', $chunks);
$cane = implode(', (\'', str_split($nexstring, 21));
echo $cane; // OUTPUTS -> 2040-01-01 12:00:00'), (' 2040-01-02 12:00:00'), ('
$i = date("Y-m-d g:i:s",strtotime("+1 day", strtotime($i)));
}
echo $cane; // OUTPUTS -> 2040-01-02 12:00:00'), ('
现在我的问题是
为什么$ cane在while {}之外回复我不同的东西?我应该如何在while {}之外存储这个变量?
答案 0 :(得分:2)
echo $cane
一次只输出其中一个值。但它在循环内部,因此它运行多次 - 这是你获得所有这些值的唯一原因。当然,如果你再次在循环之外回显$cane
,它将只包含你放在那里的最后一个值 - 之前的值已被输出,但被覆盖。
如果它们应该在外面可用,你必须将所有这些值附加到循环内的一个变量中:
$allCane="";
while ($i <= $date_4) {
$i = date("Y-m-d g:i:s", strtotime($i));
array_push($results, $i);
$k= $i . "\n";
$chunks = str_split($k, 19);
$nexstring = join('\')', $chunks);
$cane = implode(', (\'', str_split($nexstring, 21));
echo $cane;
$allCane .= $cane; // appends $cane to $allCane
$i = date("Y-m-d g:i:s",strtotime("+1 day", strtotime($i)));
}
echo $allCane;
或者,正如Dagon所指出的,您可以将所有这些值存储在一个数组中:
$allCane = array();
for ( /* ... */ ) {
// ...
$allCane[] = $cane;
// ...
}
/*
$allCane is now
array (
[0] = "2040-01-01 12:00:00'), (' ",
[1] = "2040-01-02 12:00:00'), (' ",
...
)
*/
答案 1 :(得分:0)
运行此代码以更好地查看内容:
$results = array($date_1);
$i = $date_3;
$cane = "";
$count = 0;
while ($i <= $date_4)
{
$i = date("Y-m-d g:i:s", strtotime($i));
array_push($results, $i);
$k= $i . "\n";
$chunks = str_split($k, 19);
$nexstring = join('\')', $chunks);
// assign a new value to $cane
$cane = implode(', (\'', str_split($nexstring, 21));
echo "Loop $count: $cane <br/>";
$i = date("Y-m-d g:i:s",strtotime("+1 day", strtotime($i)));
$count++;
}
echo "After loop: $cane";