【发布时间】:2018-01-05 21:20:26
【问题描述】:
样本数组:
$team = array(
array(
"cid" => 123,
"pid" => 000,
.
.
),
array(
"cid" => "666",
"pid" => "000",
.
.
),
array(
"cid" => "777",
"pid" => "123",
.
.
),
array(
"cid" => "888",
"pid" => "123",
.
.
),
array(
"cid" => "999",
"pid" => "777",
.
.
),
.
.
);
我有一个包含 10 万条数据的类似数组。当我使用 foreach 或 for 循环搜索数据时,会花费大量时间。有没有更好的办法?
假设我想找出 pid = 123 的所有 cid。
【问题讨论】:
-
能不能把
[ pid => [ cid1, cid2, cid3 ] ]用pid作为key访问? -
我不会将此作为答案发布,因为我不确定它是否更快,但您可以使用
$cids = array_column($array, 'pid');从每个内部数组中提取列pid,同时保留索引。然后你可以搜索它。搜索会更快,但array_column也需要一些时间。 -
您是否在每个请求上生成整个数组?这似乎是属于数据库的数据,因此您只需要加载所需的数据并轻松搜索即可
-
对我来说似乎是最简单的(并且可能是最有效的方法是限制获取的记录数量(通过 SQL 查询或 API 调用)。处理这么大数组几乎总是会导致问题。
-
@rypskar 不是每个请求。我实际上将一些数据从数据库中检索到数组中,然后对其执行了一些操作,甚至添加了几列,然后我正在搜索数据。以便我可以执行其他操作。必须对每个 'pid' 执行搜索。
标签: php arrays search optimization multidimensional-array