3v4l.org

run code in 300+ PHP versions simultaneously
<?php //Допустим есть метод, где мы получаем определенные поля, по типу //... $arProduct['REVIEWS'] = Review::getProductReviews($arProduct['ID']); $arProduct['QUESTIONS'] = Question::getProductQuestions($arProduct['ID']); //... //Нужно сделать так, чтобы клиент мог указать какие поля не нужно загружать из бд. //То есть, если $fieldsToLoad = [REVIEWS, QUESTIONS], значит их не нужно передавать клиенту. Как это возможно сделать? Есть //такой вариант: $fieldsToLoad = [ 'REVIEWS' => function () use ($arProduct, $reviewsSize) { $arProduct['REVIEWS] = Review::getProductReviews($arProduct['ID']); }, 'QUESTIONS' => function () use ($arProduct, $questionsSize) { $arProduct['QUESTIONS'] = Question::getProductQuestions($arProduct['ID']); } ] foreach ($fieldsToLoad as $fieldName => $fieldLoader) { if (!in_array($fieldName, $notLoadFields)) { $fieldLoader(); } } //Но проблема в том, что возможно нужно будет добавить общее условие для каких то полей, как пример: //... if ($block == 60) { $arProduct['REVIEWS'] = Review::getProductReviews($arProduct['ID']); $arProduct['QUESTIONS'] = Question::getProductQuestions($arProduct['ID']); } //... //И тогда получается не очень, так как для каждого элемента массива $fieldsToLoad придется писать отдельное условие. Есть ли //более лучшее решение вопроса?

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
8.3.30.0090.00618.29
8.3.20.0000.01421.82
8.3.10.0040.01221.77
8.3.00.0120.00618.91
8.2.160.0140.00418.78
8.2.150.0120.00318.97
8.2.140.0140.00320.38
8.2.130.0040.01120.53
8.2.120.0040.01119.16
8.2.110.0120.00319.27
8.2.100.0090.00618.84
8.2.90.0030.01318.66
8.2.80.0140.00019.16
8.2.70.0090.00618.72
8.2.60.0120.00318.58
8.2.50.0090.00618.89
8.2.40.0040.01218.78
8.2.30.0100.00718.33
8.2.20.0080.00818.53
8.2.10.0100.00718.71
8.2.00.0070.01118.69
8.1.270.0070.00722.16
8.1.260.0080.00821.95
8.1.250.0030.01221.96
8.1.240.0100.00718.49
8.1.230.0040.01518.40
8.1.220.0090.00918.71
8.1.210.0100.00718.43
8.1.200.0120.00318.39
8.1.190.0100.00718.57
8.1.180.0110.00717.96
8.1.170.0140.00418.73
8.1.160.0000.01618.54
8.1.150.0060.00918.64
8.1.140.0120.00318.54
8.1.130.0100.00718.50
8.1.120.0060.01018.38
8.1.110.0090.00618.50
8.1.100.0090.00619.68
8.1.90.0110.00418.42
8.1.80.0090.00919.69
8.1.70.0160.00018.45
8.1.60.0040.01218.50
8.1.50.0030.01318.55
8.1.40.0100.00718.46
8.1.30.0140.00318.73
8.1.20.0070.01019.78
8.1.10.0030.01318.47
8.1.00.0070.00718.50

preferences:
134.1 ms | 993 KiB | 7 Q