0

我有一个 php 脚本,它加载不同的 ID 并将它们发送到 GET 变量上的页面,它们都用逗号分隔:

.../page.php?items=12,13,43,17,

然后我用while循环加载一个mysql,以便显示一个表,我需要查看表项的id是否相同,然后它为该表行添加样式。

所以我所做的是:

$style = (strstr($_GET['ids'], $segn['itemid'])) ? 'style="background:lightgreen;"' : '' ;
<tr class="gradeX" <?= $style ?> >;

在这种情况下,它适用于单个数字。但是如果我有这个并且IDS: 1, 2, 3 ... 12页面获取请求是"page.php?items=12"我得到的 ids'12'和.'1''2'

我以为我可以使用explode(',' , $_GET['ids']),但后来我想它太长了。

我如何获得这些ID?(我对正则表达式没有任何亲和力......)。

4

3 回答 3

3

您必须将 id 作为数组而不是字符串使用。所以先做一个数组:

$ids = explode(',', $_GET['items']);

然后检查当前项是否在数组中:

$style = in_array($segn['itemid'], $ids) ? 'style="background:lightgreen;"' : '';

也就是说,您应该使用 CSS 类而不是内联样式。

于 2013-05-18T22:40:42.893 回答
2

代替:

strstr($_GET['ids'], $segn['itemid'])

你可以这样做:

in_array($segn['itemid'], explode(',',$_GET['ids']));
于 2013-05-18T22:42:27.830 回答
1

你不需要正则表达式。像您一样使用爆炸拆分您的 get 变量:

$items = explode(",", $_GET['items']);

小心——您在代码中使用了错误的名称(您的 get 变量是“items”,而不是“ids”);

然后使用 in_array 检查它是否在那里。

$style = in_array($segn['itemid'], $items) ? 'style="background:lightgreen;"' : '';
于 2013-05-18T22:45:04.223 回答