我不确定搜索价值的最佳方式和最快捷方式。
我有一个最多20个ID的检查清单,如下例所示。但它们也可以存储为数组。
'6e0ed0ff736613fdfed1c77dc02286cbd24a44f9','194809ba8609de16d9d8608482b988541ba0c971','e1d612b5e6d2bf4c30aac4c9d2f66ebc3b4c5d96'....
我接下来要做的是从json api调用另一组项目作为php stdclass。当我遍历这些项目时,我为每个项目添加html以显示在我的网站上。如果项目的id中的一个与核对表中的ID匹配,那么我将添加不同的html
我在ajax调用中做了所有这些,那么搜索该核对表的最佳和最有效的方法是什么?
例如
//get a list of ids from DB and store in $checklist
$checklist;
$data = file_get_contents($url);
$result = json_decode($data, true);
foreach ( $result->results as $items )
{
$name = $items->name;
$category = $items->category;
$description = $items->description;
$id = $items->id;
// if ID is in $checklist then use blue background.
$displayhtml .="<div style=\"background-color: white;\">";
$displayhtml .="<h3>".$name."</h3>";
$displayhtml .="<p>".$description."</p>";
$displayhtml .="</div>";
}
感谢。
答案 0 :(得分:3)
简单的方法(如果您使用PHP来执行此操作)是使用in_array()
$checklist = array(
'6e0ed0ff736613fdfed1c77dc02286cbd24a44f9',
'194809ba8609de16d9d8608482b988541ba0c971',
'e1d612b5e6d2bf4c30aac4c9d2f66ebc3b4c5d96',
'etc.'
);
foreach ($items as $id) // $items are a similar array of ids you're checking
{
if ( ! in_array($id, $checklist))
{
// not in the checklist!
}
}
foreach ( $result->results as $items )
{
$name = $items->name;
$category = $items->category;
$description = $items->description;
$id = $items->id;
// if ID is in $checklist then use blue background.
if (in_array($id, $checklist))
{
$bg = 'blue';
}
else
{
$bg = 'white'
}
$displayhtml .='<div style="background-color: '.$bg.';">';
$displayhtml .="<h3>".$name."</h3>";
$displayhtml .="<p>".$description."</p>";
$displayhtml .="</div>";
}
有更优雅的方法可以解决这个问题,但你没有要求重写。就个人而言,首先我会添加一个css类而不是内联样式,但希望这会让你前进。
答案 1 :(得分:3)
我将从两个集合中创建2个数组,并使用array_intersect()来提取重叠的ID
http://www.php.net/manual/en/function.array-intersect.php
$array1 = array(123,234,345,456,567);
$array2 = array(321,432,345,786,874);
$result = array_intersect($array1, $array2);
// Results in: $result = array( 345 )