php数组轮训,php数组在两个dementional数组内匹配(php array match within a two dimensional array)...

php数组在两个dementional数组内匹配(php array match within a two dimensional array)

例如,我有一个数组:

$objects = ['car', 'cat', 'dog', 'Peter'];

和另一个:

$types = [

'man' => ['Peter', 'John','...'],

'animal' => ['pig', 'cat', 'dog', '...'],

'vehicle' => ['bus', 'car', '...']

];

我的目标是获得一个数组:

$result = [

'man' => ['Peter'],

'animal' => ['cat', 'dog'],

'vehicle' => ['car']

]

在我目前的工作中,在数组中搜索最有效的方法是什么?我使用了两个foreach循环来搜索,但发现它太慢了,我的数组中有大约数千个元素,请帮助

for example, I have a array:

$objects = ['car', 'cat', 'dog', 'Peter'];

and another:

$types = [

'man' => ['Peter', 'John','...'],

'animal' => ['pig', 'cat', 'dog', '...'],

'vehicle' => ['bus', 'car', '...']

];

and my goal is get an array like:

$result = [

'man' => ['Peter'],

'animal' => ['cat', 'dog'],

'vehicle' => ['car']

]

what is the most efficient way to search within an array, in my current work, I use two foreach loop to search but figured it's too slow, I have about thousands of elements in my array.

原文:https://stackoverflow.com/questions/41669719

更新时间:2019-12-10 11:26

最满意答案

使用array_intersect :

foreach ($types as $key => $type) {

$result[$key] = array_intersect($type, $objects);

}

Use array_intersect:

foreach ($types as $key => $type) {

$result[$key] = array_intersect($type, $objects);

}

2017-01-16

相关问答

$period = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);

$sma = array(6,9);

$array = array();

foreach ($sma as $range) {

$sum = array_sum(array_slice($period, 0, $range));

$result = array($range - 1 => $sum / $range);

for

...

$filteredUsers = [];

foreach ($users as $user) {

$filteredUsers[$user['id']] = $user;

}

// optionally:

// $filteredUsers = array_values($filteredUsers);

$filteredUsers = [];

foreach ($users as $user) {

$filteredUsers[$user['id']] = $user;

}

...

您可以使用array_intersect_assoc()并计算结果数字 echo count(array_intersect_assoc($arr1,$arr2));

http://php.net/manual/en/function.array-intersect-assoc.php 如果计数中的数字与要检查的索引键的数量相同,则检查两个数组是否相同,否则将得到匹配的键值数 You could use array_intersect_assoc() and count the result

...

使用array_intersect : foreach ($types as $key => $type) {

$result[$key] = array_intersect($type, $objects);

}

Use array_intersect: foreach ($types as $key => $type) {

$result[$key] = array_intersect($type, $objects);

}

不复杂: $inputsymbol = 'QCOM';

$data1 = [];

$fh = fopen("data1.csv", "r"));

while (($data = fgetcsv($fh, 1024)) !== FALSE) {

if ($data[0] == $inputsymbol) {

unset($data[0]);

$data1[] = $data;

}

}

fclose($fh);

那你究竟在哪里遇到这个问题? Not

...

使用A1中的搜索字符串: =SUMPRODUCT((E2:H6=A1)*ROW(E2:H6))

显然,如果范围内有多个搜索字符串,这将失败。 但是,您提供的数据集中的每个值都是唯一的,所以我认为这不是问题。 此外,如果这是可能的话,您需要澄清可能的几个不同的行数应该是哪个优先回报。 问候 With your search string in A1: =SUMPRODUCT((E2:H6=A1)*ROW(E2:H6))

Obviously this will fail if there is m

...

首先,你正在寻找implode()而不是explode() 。 function flatten($two_dim_array)

{

$result = array();

foreach ($two_dim_array as $array)

$result[] = implode("," $array);

return $result;

}

First of all, your are looking for implode() and not

...

按照主要行或列主要的顺序将二维数组展平,将其存储在一维数组中。 将数组的形状{n, m}存储在另一个一维整数数组中。 给定二维数组数组中元素的索引,可以使用该形状计算一维数组值中的索引。 这两种表示是同构的,并且都允许在恒定时间内查找值。 这与2-D数组在内存中的表现方式也很相似。 Flatten the 2-d array in either row-major or column-major order, storing it in one of the 1-d arrays. Store t

...

您不会使用三维数组,只能使用带有表格及其标记的二维数组。 或者,正如Alnitak已经提到的,查找对象更好: var map = {};

var dls = document.getElementsByTagName('dl');

for (var i = 0, i < dls.length; i++) {

var tableid = dls[i].id; // identifier?

var dts = dls[i].getElementsByTagName('dt'); //

...

不,没有可以实现此功能的内置功能。 但是,这是一个非常直接的foreach循环,所以我不明白你为什么需要一个函数: $result = array();

foreach ($array as $key => $value) {

$result[$key][1] = $value;

}

print_r($result);

如果你想要一个更实用的方法,你可以使用array_walk() : // walks through the original $array and adds a n

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值