为数组中的每个项目创建唯一的ID,即使在页面上多次调用也是如此


Creating a unique ID for every item within an array, even if called more than once on a page

在我创建的网站上,我在一个页面上有三个位置的商店'开放时间'。一个在页眉,一个在正文,一个在页脚。我试图把这些在PHP简单更新时。我写了一个数组:

<?php
$UniqID = uniqid(day);
$day1 = 'Mon-Fri: 9:00a-5:00p';
$day2 = 'Saturday: 9:00a-1:00p';
$day3 = 'Sunday: CLOSED';
$days = array(
    "1" => "<span id=" . $UniqID . " class='editable-text'>" . $day1 . "</span>",
    "2" => "<span id=" . $UniqID . " class='editable-text'>" . $day2 . "</span>",
    "3" => "<span id=" . $UniqID . " class='editable-text'>" . $day3 . "</span>",<
);
?>

然后我在页面上这样调用它:

<span>Address | Phone <br/> Our Hours: <?php echo $days[1] ?>, <?php echo $days[2] ?>, <?php echo $days[3] ?></span>

我的问题是,我需要一个唯一的ID每次这些被调用到页面,显然这给了1,2和3一个唯一的ID -但如果我在页面上调用相同的东西2或3次…那么,前三个实例都具有相同的ID,依此类推。

所以总结一下,我想创建一个数组来存储像上面那样的小时-并且能够在必要的时候调用它们到页面,但是无论它们出现在哪里,总是得到一个唯一的ID。

任何帮助都是感激的,我不能处理这个了!

你能做的就是在最上面声明唯一的ID,就像你对$uniqueID=X所做的那样

然后,每次将$uniqueID插入DOM时,也增加它。所以:

<?php echo "<span id='".$uniqueID++."'>STUFF IN SPAN</span>"; ?>

如果$uniqueID是int,"++"将增加它,因此每次插入它时都保持一个唯一的值。

不是在顶部声明一个唯一的ID,而是为每个<span>声明一次。也可以在一个带有变量变量的循环中声明它,像这样:

$day1 = 'Mon-Fri: 9:00a-5:00p';
$day2 = 'Saturday: 9:00a-1:00p';
$day3 = 'Sunday: CLOSED';
for ($i = 1; $i <= 3; $i++) {
    $days[$i] = "<span id='uid" . uniqid() . "' class='editable-text'>" . ${'day'.$i} . "</span>";
}

这将产生如下内容:

Array
(
    [1] => <span id='uid53350c2f730eb' class='editable-text'>Mon-Fri: 9:00a-5:00p</span>
    [2] => <span id='uid53350c2f73156' class='editable-text'>Saturday: 9:00a-1:00p</span>
    [3] => <span id='uid53350c2f731d0' class='editable-text'>Sunday: CLOSED</span>
)

注意,id属性不能以数字开头(否则它不是有效的HTML),所以您可能应该在uniqid()之前放一些字母,就像我对uid所做的那样。此外,您缺少id值周围的引号。