【发布时间】:2010-08-30 23:56:29
【问题描述】:
当我们想查看“单词”是否是数组的元素时,我想知道哪些摘录应该占用更少的资源:
摘录 1 - 检查变量:
<?php
function checkWord($word, $elements) {
$array = array($word => true);
foreach ($elements as $element) {
if (isset($array[$element])) return true;
}
return false;
}
$elements = array('this', 'is', 'an', 'array', 'with', 'a', 'word');
checkWord('word', $elements);
?>
摘录 2 - 比较字符串:
<?php
function checkWord($word, $elements) {
foreach ($elements as $element) {
if ($element == $word) return true;
}
return false;
}
$elements = array('this', 'is', 'an', 'array', 'with', 'a', 'word');
checkWord('word', $elements);
?>
我知道我们可以简单地使用in_array(),但这不是重点。
那么,总而言之,使用 isset 进行变量检查是否比比较字符串更好?
编辑请理解我知道有更好的方法来做到这一点。我只是询问以上哪种方式更好并且占用的资源更少。
【问题讨论】:
-
如果它们返回true或false,它们不应该被包装在函数中吗?
-
是的,这只是我编写的快速代码。这不是这里的问题,但没关系,我会编辑:)
-
创建适当的数组并使用 in_array 怎么样?毫无疑问,它会比您建议的更快。
-
in_array 应该非常适合这种情况。有什么问题吗??
-
@Mark,虽然第一次阅读问题的速度是我的错,但我实际上毫不费力地理解了 Nuno 想知道的是对数组进行迭代的两种方法中哪一种更快因此,除了内置的 in_array() 之外,资源消耗更少。我真的看不出任何反对票的原因,这是一个完全有效的问题。
标签: php string variables compare