Сохранить свойство объекта как элемент массива в laravel - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь создать функцию, основанную на типе действия, вызывающего ее (create/update), она должна преобразовывать вход и возвращать тот же вход с другим типом данных, Пример: create : Array и update : Object

Как вы можете видеть в коде, действие для обоих почти одинаково, за исключением индекса в default case и способа создания и сохранения переменной.

switch ($type) {
    case 'create':
        $obj = [];
        foreach($request->input('slug') as $key => $value) {
            if(empty($value) || is_null($value)) {
                $obj[$key] = $uniqueId.'-'.str_replace(' ', '-', strtolower($titles[$key]));
            }else {
                $obj[$key] = $uniqueId.'-'.str_replace(' ', '-', strtolower($value));
            }
        }
        break;

    default:
        $obj    = new \StdClass;
        foreach($request->input('slug') as $key => $value) {
            if(empty($value) || is_null($value)) {
                $obj->{$key} = $uniqueId.'-'.str_replace(' ', '-', strtolower($titles[($key+2)]));
            }else {
                $obj->{$key} = $uniqueId.'-'.str_replace(' ', '-', strtolower($value));
            }
        }
        break;
}

Мне нужно просто преобразовать этот код в 1 цикл, сохраняя оба случая более эффективным способом, таким как

if($type == 'create') {
    $obj    = [];
    $index  = 0;
} else {
    $obj = new \StdClass;
    $index = 2;
}
foreach($request->input('slug') as $key => $value) {
    if(empty($value) || is_null($value)) {
        //this is possible in javascript, it is possible in php?
        $obj[$key] = $client->subdomain.'-'.str_replace(' ', '-', strtolower($titles[($key+$index)]));
            }else {

                $obj[$key] = $client->subdomain.'-'.str_replace(' ', '-', strtolower($value));
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...