【发布时间】:2022-01-07 15:58:28
【问题描述】:
例如。我有 2 个数组:
$arr1 = array("cake", "make"); 和 $arr2 = array("birthday cake", "maker", "a random index");
我想检查$arr1 的两个值是否作为子字符串存在于$arr2 中。 $arr2 也可能有其他元素,但它是否包含 $arr1 的所有索引作为子字符串并不重要。
我知道标准的嵌套循环方法,但我不想使用它,因为性能会很糟糕(因为我有一个大数组)。我想问一下 PHP 是否包含为此的内置函数,或者是否有另一种方法可以以更好的时间复杂度完成此任务 [最好是 O(log n),但 O(n) 也可以]。
【问题讨论】:
-
您提供的样本数据的答案应该是什么,因为
make在maker中,但这算不算 -
您是否对嵌套循环进行了实际性能测试,以确认性能确实很糟糕?
-
@RiggsFolly 是的,它很重要,因为
make是maker的子字符串,而cake是birthday cake的子字符串,所以它应该返回true。 -
@ChrisHaas 我在实际情况中使用了嵌套循环代码,是的,当我有可以匹配一个巨大号的数组时。其他数组,性能很差。
-
我认为没有任何内置的 PHP 函数可以实现这一点,因此需要嵌套循环。确保在找到匹配项时跳出内部循环,这将提高效率。