Если массив $ products должен поддерживать этот конкретный формат, вот наиболее эффективный метод получения значения продукта из миллионов записей:
function getValue($products, $name, $productKey) {
return ($search = explode('"name":' . $name . ',"product_key":' . $productKey, json_encode($products))) && (next($search) !== false) ? rtrim(substr($search[0], strrpos($search[0], '":') + 2), ',') : false;
}
Пример массива продукта:
$products = array(
(object) array(
'value' => 0,
'name' => 13,
'product_key' => 3195
),
(object) array(
'value' => 20,
'name' => 14,
'product_key' => 3196
),
(object) array(
'value' => 40,
'name' => 15,
'product_key' => 3197
)
);
Получение значения с именем продукта и ключом (возвращает false, если значение не найдено):
$productValue = getValue($products, 14, 3196);