Хороший для тупого перебора случай, ищем 12415
Basic search: average=0ms, min = 0ms, max = 2ms
Binary search: average=0ms, min = 0ms, max = 0ms
Interpolation search: average=0ms, min = 0ms, max = 0ms
Средний для перебора случай, ищем 3451524:
Basic search: average=64ms, min = 62ms, max = 67ms
Binary search: average=0ms, min = 0ms, max = 0ms
Interpolation search: average=0ms, min = 0ms, max = 0ms
Плохой для перебора случай, ищем 9542417:
Basic search: average=176ms, min = 158ms, max = 182ms
Binary search: average=0ms, min = 0ms, max = 0ms
Interpolation search: average=0ms, min = 0ms, max = 0ms
$search = array_filter($arr, function (array $item) use ($needle) {
foreach($needle as $key => $value) {
if (!isset($item[$key]) || $item[$key] !== $value) {
return false;
}
}
return true;
}
$search = array_filter($arr, function (array $item) use ($needle) {
return $needle == array_intersect_key($item, $needle);
}
$search = array_search($needle, array_map(function (array $item) use ($needle) {
return array_intersect_keys($item, $needle);
}, $arr, false),
$search = [];
foreach ($arr as $item) {
if ($needle == array_intersect_key($item, $needle)) {
$search[] = $item;
}
}
<?php
$api = '{"return":[{"usd":0.73644968},{"btc":0.01526533},{"66":0},{"aero":0},{"ar":0},{"asce":0},{"bank":0},{"blz":0},{"bltr":0},{"bnc":0},{"bpc":0},{"brit":0},{"bst":0},{"btcs":0},{"btq":0},{"cam":0},{"cann":0},{"ccn":0},{"cesc":0},{"cfc2":0},{"cln":0},{"cnl":0},{"coin":0},{"cool":0},{"cinni":0},{"crt":0},{"cso":0},{"doge":0},{"drk":0},{"duck":0},{"dvc":0},{"elite":0},{"enrg":0},{"fire":0},{"food":0},{"frsh":0},{"fry":0},{"fsc":0},{"ftc":0},{"ghc":0},{"gly":0},{"god":0},{"grc":0},{"hodor":0},{"html":0},{"icg":0},{"isis":0},{"isr":0},{"lgbt":0},{"lit":0},{"lize":0},{"ltc":0},{"lts":0},{"max":0},{"min":0},{"mj":0},{"mona":0},{"moto":0},{"mtc":0},{"neb":0},{"nhc":0},{"nmc":0},{"note":0},{"nud":0},{"pcc":0},{"pes":0},{"plcn":0},{"pop":0},{"pos":0},{"pro":0},{"pseud":0},{"pyra":0},{"qb":0},{"rce":0},{"rox":0},{"rsn":0},{"rvc":0},{"sbc":0},{"sdc":0},{"spata":0},{"spcc":0},{"spn":0},{"start":0},{"stc":0},{"super":0},{"svc":0},{"tech":0},{"thank":0},{"tor":0},{"trk":0},{"trust":0},{"uro":0},{"via":0},{"vrc":0},{"vtc":0},{"water":0},{"was":0},{"web":0},{"xan":0},{"xbd":0},{"xbl":0},{"xgr":0},{"yacc":0},{"x15c":0},{"xfc":0}]}';
$data = json_decode($api, true);
// переводим курсы валют в удобный нам формат
$currencyRates = array_reduce($data['return'], function ($rates, $rate) {
return array_merge($rates, $rate);
}, []);
var_dump($currencyRates);
$usd = $currencyRates['usd'];
$dirMapping = [
3 => 'other'
13 => 'MAZ'
11 => 'LOL'
9 => 'pack'
];
$hierarchy = [
13 => 11
11 => 9
];
$ids = [11, 13];
$paths = [];
foreach ($ids as $current) {
$path = [];
// повторяем пока мы не дойдем до последнего
while(isset($hierarchy[$current])){
$path[] = $dirMapping[$current];
$current = $hierarchy[$current];
};
$path[] = $dirMapping[$current];
$paths[] = join(':', array_reverse($path));
}
function isSame(a, b) {
if (a.length > b.length) {
b = [a, a = b][0]; //swap
}
for(var i = 0, length = a.length;i<length;i++) {
if (-1 === b.indexOf(a[i])) {
return false;
}
}
return true;
}