Как посчитать имя поля, начинающееся с того же префикса при отправке формы? - PullRequest
1 голос
/ 02 ноября 2019

Мне нужно посчитать поле, которое начинается с того же значения префикса в PHP laravel перед отправкой.
Ниже приведен ответ Laravel, и здесь мне нужно подсчитать имя поля, которое начинается с "of _".

{
    "_token": "c3wPhNtM86QujtsugZaZTonLUnWJBWjyyRMhorsd",
    "name": null,
    "type": null,
    "no_of_guest": "200",
    "time": "Breakfast",
    "price": null,
    "service_charge": null,
    "of_1": [
        "1",
        "6"
    ],
    "of_2": [
        "8",
        "11"
    ],
    "of_3": [
        "2",
        "12"
    ]
}

Ответы [ 2 ]

2 голосов
/ 02 ноября 2019

Что-то вроде , это должно вам помочь.

<?php
$json = '{"_token":"c3wPhNtM86QujtsugZaZTonLUnWJBWjyyRMhorsd","name":null,"type":null,"no_of_guest":"200","time":"Breakfast","price":null,"service_charge":null,"of_1":["1","6"],"of_2":["8","11"],"of_3":["2","12"]}';
$decoded = json_decode($json);
foreach ($decoded as $key => $value) {
    if (strpos($key, 'of_') === 0) {
       echo print_r($value);
    }
}
0 голосов
/ 02 ноября 2019

Если вы хотите подсчитать, сколько полей в JSON начинается с of_, вы можете использовать start_with helper

$json = '{"_token":"c3wPhNtM86QujtsugZaZTonLUnWJBWjyyRMhorsd","name":null,"type":null,"no_of_guest":"200","time":"Breakfast","price":null,"service_charge":null,"of_1":["1","6"],"of_2":["8","11"],"of_3":["2","12"]}';
$array = json_decode($json, true);
$count = 0;
foreach ($array as $key => $value) {
    if (starts_with($key, 'of_')) $count++;
}
return $count;

Output

3

Andесли вы хотите вычислить сумму каждых 2 значений в каждом of_ ключе

$json = '{"_token":"c3wPhNtM86QujtsugZaZTonLUnWJBWjyyRMhorsd","name":null,"type":null,"no_of_guest":"200","time":"Breakfast","price":null,"service_charge":null,"of_1":["1","6"],"of_2":["8","11"],"of_3":["2","12"]}';
$array = json_decode($json, true);
foreach ($array as $key => &$value) {
    if (starts_with($key, 'of_')) {
        $value = (int) $value[0] + (int) $value[1];
    }
}
return $array;

Выход

{
    "_token": "c3wPhNtM86QujtsugZaZTonLUnWJBWjyyRMhorsd",
    "name": null,
    "type": null,
    "no_of_guest": "200",
    "time": "Breakfast",
    "price": null,
    "service_charge": null,
    "of_1": 7,
    "of_2": 19,
    "of_3": 14
}

И если вы хотите сложить все значения

$json = '{"_token":"c3wPhNtM86QujtsugZaZTonLUnWJBWjyyRMhorsd","name":null,"type":null,"no_of_guest":"200","time":"Breakfast","price":null,"service_charge":null,"of_1":["1","6"],"of_2":["8","11"],"of_3":["2","12"]}';
$array = json_decode($json, true);
$sum = 0;
foreach ($array as $key => &$value) {
    if (starts_with($key, 'of_')) {
        $sum += (int) $value[0] + (int) $value[1];
    }
}
return $sum;

Вывод

40

Надеюсь, это поможет

...