使用PHP获取多维数组中父级数组键的最快方法

4

如何获取多维数组的父级数组键名是最佳方式? 例如,我有以下数组:

array(

    [0] => array(0=> sample, 1=>picture, 2=>frame, 3=>google)

    [1] => array(0=> iphone, 1=>orange, 2=>love, 3=>msn)

    [2] => array(0=> joe, 1=>geee, 2=>panda, 3=>yahoo)
)

现在我需要搜索例如谷歌并获取父数组键,应该是0...有什么想法吗?我用for循环做了这个,但如果我有700000行的数组,它会很慢。


1
是的,无论如何它都会很慢。你必须考虑你的数据大小,而不是挖掘这个数量的最快方式。 - Your Common Sense
2个回答

10

如果你有一个拥有700,000行的数组,那么你几乎肯定在做某些错误的事情...我首先会建议考虑利用不同的数据存储方式:平面文件或某种类型的数据库。


foreach($array as $key => $value) {
    if(in_array('google', $value)) return $key
}

这段代码是一个PHP的foreach循环语句。它遍历了一个数组$array,将每个元素都赋值给$value,相应的键名赋值给$key。在循环体内部使用了in_array函数来判断$value中是否包含字符串'google',如果包含,则返回对应的$key。

5

有700,000行的数组?有多少个数组?9/10的情况下,问题在于您的数据设置错误。

我假设您正在进行某种搜索。由于无法对数组进行索引(在“搜索”索引的意义上),因此最好将数据放入数据库,并充分利用列索引以快速搜索。

根据上下文,您可能还希望考虑将数据存储在文件中,每个数组一个文件,并使用文件搜索找到包含您值的文件。


1
我非常赞同,在SQL/MySQL中使用索引表肯定比使用那么大的数组要好得多。 - JYelton
1
由于某些原因,我不想使用数据库。 我希望有一种快速而简单的解决方案。 - Desolator
3
如果你需要重复执行这项任务,数据库可能是最快的解决方案。如果非常迅速且简单粗暴的话,可以使用电子表格。 - Adam Hopkinson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接