Как оптимизировать при поиске значения нескольких объектов?

Надеюсь, что все хорошо.

Допустим, у меня есть этот объект х 200 (с разными значениями, конечно)

[0] => stdClass Object
(
[Manufacturer] => Nike
[Name] => Air Max Talldress
[Options] => stdClass Object
(
[Black] => Array
(
[0] => Medium
[1] => Large
)

[White] => Array
(
[0] => Small
)

)

)

Я хочу только все объекты, где «Производитель = Nike». Как мне сделать ТОЛЬКО сравнение со свойством «Производитель», не тратя время на свойства, которые в данном случае не актуальны. Оптимизировать процесс.

Я не заинтересован в DBMS, я хочу посмотреть, что здесь возможно.

//
Нео

-2

Решение

Это может помочь вам на вашем пути …

Чтобы воссоздать проблему и убедиться, что фильтр работает, я создал фиктивный массив с производителями и сгенерировал 100 фиктивных «объектов» данных, чтобы выполнить итерацию и найти объекты, содержащие определенного производителя.

<?php
$mans = ['Nike', 'Adidas', 'New Balance', 'Under Armour', 'Skechers', 'Asics', 'Saucony', 'Diadora', 'Fila', 'Anta'];
$arr = [];

// create a bunch of dummy data 'objects'
for($i=0; $i<10; $i++) {
foreach($mans as $key => $name) {
$arr[] = array("0" => (object)[
"Manufacturer" => $name,
"Name" => 'some model made by ' . $name,
"Options" => (object)[
"Black" => Array
(
"0" => 'Medium',
"1" => 'Large',
),
"White" => Array
(
"0" => 'Small'
)]
]
);
}
}


// filter for a manufacturer
$manufacturer = 'Nike'; // this is the manufacturer we are looking for
$result = filterMans($manufacturer, $arr); // $result is the array with all objects with the manufacturer we're looking for
$hits = count($result); // for each manufacturer in our list we get 10 hits

echo 'your search for objects with manufacturer ' . $manufacturer . ' returned ' . $hits . ' results';
echo '<br />';
echo '<pre>';
var_dump($result);
echo '</pre>';

function filterMans($needle, $haystack)
{
$result = null;
foreach($haystack as $key => $value) {
if($value[0]->Manufacturer === $needle) {
$result[] = $value[0];
}
}
return $result;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]