将对象属性保存为类似Laravel中的数组元素

时间:2018-09-16 22:32:00

标签: php arrays laravel object

我正在尝试创建一个函数,该函数基于调用它的操作类型(create/update),它应该转换输入并返回具有不同数据类型的相同输入,例如:create : Arrayupdate : 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));
        }
    }
}

0 个答案:

没有答案