我有一个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? (我对regexp没有任何亲和力......)。
答案 0 :(得分:3)
您必须将ID作为数组使用,而不是作为字符串。所以先做一个数组:
$ids = explode(',', $_GET['items']);
然后检查当前项是否在数组中:
$style = in_array($segn['itemid'], $ids) ? 'style="background:lightgreen;"' : '';
那就是说,你应该使用CSS类而不是内联样式。
答案 1 :(得分:2)
而不是:
strstr($_GET['ids'], $segn['itemid'])
你可以这样做:
in_array($segn['itemid'], explode(',',$_GET['ids']));
答案 2 :(得分:1)
你不需要正则表达式。 像你一样使用爆炸拆分你的get变量:
$items = explode(",", $_GET['items']);
小心 - 你在代码中使用了错误的名称(你的get变量是“items”,而不是“id”);
然后使用in_array检查它是否在那里。
$style = in_array($segn['itemid'], $items) ? 'style="background:lightgreen;"' : '';