PHP - array_count_values或array_key_exists

时间:2014-04-10 12:34:21

标签: php xml array-key-exists

这两种方法中的哪一种(array_count_values或array_key_exists)更友好'关于内存消耗,资源使用和代码处理的简易性。差异是否足以达到可能发生重大性能冲击或损失的地方?

如果需要有关如何使用这些方法的更多细节,我将解析一个非常大的XML文件,并使用simpleXML将某些XML值检索到一个数组中(以存储URL' s),如下所示: / p>

$XMLproducts = simplexml_load_file("products.xml");
foreach($XMLproducts->product as $Product) {
if (condition exists) {
$storeArray[] = (string)$Product->store; //potentially several more arrays will have    values stored in them
}}

没有重复的值将插入到数组中,我正在讨论使用array_key_exists或array_count_values方法来防止重复值。我理解array_key_exists更多,但我的问题是它对资源有多友好?足以显着降低性能?

我更倾向于使用array_count_values方法,因为除了防止数组中的重复值外,您还可以轻松显示每个值中有多少重复值。 IE如果在storeArray" Ace硬件"有3个实例,你可以很容易地显示" 3"在URL旁边,如下所示:

// The foreach loop builds the arrays with values from the XML file, like this:
$storeArray2[] = (string)$Product->store;
// Then we later display the filter links like this:
$storeUniques = array_count_values($storeArray)
foreach ($storeUniques as $stores => $amts) {
?>
<a href="webpage.php?Keyword=<?php echo $keyword; ?>&features=<?php echo $Features; ?>&store=<?php echo $stores; ?>"> <?php echo $stores; ?> </a> <?php echo "(" . ($amts) . ")" . "<br>";
}

如果两种方法之间存在很大的性能差距,我将使用array_key_exists方法。但是下面的代码只能防止显示重复值。有没有办法显示可能发生的重复值的数量(对于每个值)?

// The foreach loop builds the arrays with values from the XML file, like this:
$Store = (string)$Product->store; 
if (!array_key_exists($Store, $storeArray)) {
$storeArray[$Store] = "<a href='webpage.php?Keyword=".$keyword."&Features=".$features."&store=".$Product->store"'>" . $Store . "</a>";

}

// Then we later display the filter links like this:
foreach ($storeArray as $storeLinks) {
echo $storeLinks . "<br>";
}

1 个答案:

答案 0 :(得分:0)

使用 isset()! 它比 array_key_exists

快2.5倍

资料来源: Here