Я пытаюсь создать функцию, основанную на типе действия, вызывающего ее (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));
}
}
}