PHP将当前数组值与以前的值进行比较
我有一个PHP将当前数组值与以前的值进行比较,php,arrays,comparison,Php,Arrays,Comparison,我有一个数组,上面有图像和每个图像的日期。我正在通过数组explode检索日期。我想获取此日期值,并将其与上一张图像的上一个日期值进行比较。我的目标是将这些日期显示为对应于每个不同日期的图像集的标题 这是我的代码,我一直在摆弄,试图使这项工作(对不起,我所有的斜杠): $p=0; $a=-1; 回声“; 回声“; foreach(数组_组合($images,$locs)为$image=>$loc) { $p++; $a++; $datesort=explode('>',$image); 回声“;
数组
,上面有图像和每个图像的日期。我正在通过数组explode
检索日期。我想获取此日期值,并将其与上一张图像的上一个日期值进行比较。我的目标是将这些日期显示为对应于每个不同日期的图像集的标题
这是我的代码,我一直在摆弄,试图使这项工作(对不起,我所有的斜杠):
$p=0;
$a=-1;
回声“;
回声“;
foreach(数组_组合($images,$locs)为$image=>$loc)
{
$p++;
$a++;
$datesort=explode('>',$image);
回声“;
echo“input[label=t...$p.]{”;
回显“显示:无;”;
回声“}”;
echo“input[label=t...$p.]+label{”;
回声“边框:5px实心#FFFFFF;”;
$image=“背景:url('http://blah.com/“$loctb[$p]。”);”;
回波图像;
回声“高度:61px;”;
回声“宽度:92px;”;
echo“显示:内联块;”;
回显“填充:0px;”;
回声“}”;
echo“input[label=t.$p.]:选中+标签{”;
echo“边框:5px实心#FF9900;”;
echo“背景:url('http://blah.com/“$loctb[$p]。”);”;
回声“高度:61px;”;
回声“宽度:92px;”;
echo“显示:内联块;”;
回显“填充:0px;”;
回声“}”;
回声“;
$lastdate=数组(“”);
$lastdate[$a]=$datesort[1];
回声“;
如果($lastdate[$a]$datesort[1]){
回声“;
echo$datesort[1];
回声“;
}
回音“这里是一个快速和肮脏的方式,虽然你想把它调整到你的需要(我有这个问题,但它更糟,因为我也填补了空白日期之间):< /P>
$previous_dates=array();
foreach(数组_组合($images,$locs)为$image=>$loc){
$datesort=explode('>',$image);
如果(结束($previous_dates)$datesort[1]){
回声“;
echo$datesort[1];
回声“;
}
//…更多的东西//
$previous_dates[]=$datesort[1];
}
真的,我会重新考虑你在循环中爆炸的方法,但首先,看看这是否能让你达到你需要的位置。所以,基本上,你是按日期对图像进行分组的?你可能想看看herdoc语法。这会给你更干净的代码。太棒了!你新编辑的代码成功了。App感谢您的帮助。谢谢您,Anthony。是的,很抱歉。这是我从内存中编写代码所得到的。我认为您遇到的最大难题是在循环中设置$lastdate=array(“”;
),而不是提前设置。为了避免非循环区域中仅循环的变量,我做了一百万次。
$p = 0;
$a = -1;
echo "<table>";
echo "<tr>";
foreach (array_combine($images,$locs) as $image => $loc)
{
$p++;
$a++;
$datesort = explode('>',$image);
echo "<style>";
echo "input[label=t" . $p . "] {";
echo "display: none;";
echo "}";
echo "input[label=t" . $p . "] + label {";
echo "border: 5px solid #FFFFFF;";
$image = "background: url('http://blah.com/" . $loctb[$p] . "');";
echo $image;
echo "height: 61px;";
echo "width: 92px;";
echo "display: inline-block;";
echo "padding: 0 0 0 0px;";
echo "}";
echo "input[label=t" . $p . "]:checked + label {";
echo "border: 5px solid #FF9900;";
echo "background: url('http://blah.com/" . $loctb[$p] . "');";
echo "height: 61px;";
echo "width: 92px;";
echo "display: inline-block;";
echo "padding: 0 0 0 0px;";
echo "}";
echo "</style>";
$lastdate = array("");
$lastdate[$a] = $datesort[1];
echo "<td>";
if ($lastdate[$a] <> $datesort[1]){
echo "<h2>";
echo $datesort[1];
echo "</h2>";
}
echo "<input type=\"checkbox\" label=\"t" . $p . "\" id=\"t" . $p . "\" name =\"boxes[]\" value=\"<img src=http://blah.com/" . $loc . "\" />";
echo "<label for=\"t" . $p . "\"></label>";
echo "</div>";
echo "</td>";
if ($p % 2 == 0)
{
echo "</tr>";
}
}
echo "</table>";
$previous_dates = array();
foreach (array_combine($images,$locs) as $image => $loc) {
$datesort = explode('>',$image);
if (end($previous_dates) <> $datesort[1]) {
echo "<h2>";
echo $datesort[1];
echo "</h2>";
}
// ... more stuff ...//
$previous_dates[] = $datesort[1];
}