我正在尝试创建一个函数,该函数基于调用它的操作类型(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));
}
}
}