PHP关联数组变量赋值

3

我在一个较大的函数中有这段代码,它从HTTP Post中获取数据(使用Laravel),并将其放入数组以进行进一步处理。我感觉肯定有更好的方法来将这些字段放入数组中,但我不确定该怎么做。有什么建议吗?

    $fields = array(
        'env' => $request->get('env'),
        'subtype' => $request->get('subtype'),
        'submitter' => $request->get('submitter'),
        'problemSummary' => $request->get('problemSummary'),
        'problemDescription' => $request->get('problemDescription'),
        'resolutionCode' => $request->get('resolutionCode'),
        'resolutionDetails' => $request->get('resolutionDetails'),
        'status' => $request->get('status'),
        'account' => $request->get('account'),
        'phone' => $request->get('phone'),
        'residenceHall' => $request->get('residenceHall'),
        'roomNumber' => $request->get('roomNumber'),
        'buildingName' => $request->get('buildingName'),
        'buildingNumber' => $request->get('buildingNumber'),
        'source' => $request->get('source'),
        'submittedVia' => $request->get('submittedVia'),
        'internalNotes' => $request->get('internalNotes'),
        'computerType' => $request->get('computerType'),
        'computerVendor' => $request->get('computerVendor'),
        'operatingSystem' => $request->get('operatingSystem'),
        'recentBackup' => $request->get('recentBackup'),
        'antiVirus' => $request->get('antiVirus'),
        'acceptAgreement' => $request->get('acceptAgreement'),
    );

定义“更好的方式”。这看起来非常好。 - Sverri M. Olsen
它没有 ->all() 方法或类似的东西吗? - FirstOne
@FirstOne 是的,有一个 $request->all() 方法,但如果来自发布方面的错误(例如多余字段)我需要确保只获取这些字段。 ->all() 会把所有内容都发给我。 - Ross
@SverriM.Olsen 这样做可以用,但是在我看来有点凌乱。我考虑像zerkms建议的那样使用循环。 - Ross
1
@Ross,有什么问题吗?如果你愿意的话,这段代码可能看起来相当“笨重”,但它确切地告诉你正在发生什么。循环只会让它变得更加复杂。代码直截了当总是比它做一些“聪明”的事情好,因为这样看起来更好。 - Sverri M. Olsen
2个回答

4

以下哪个存在问题:

$fields = $request->only('env', 'subtype', 'submitter', ... );

或者:

$fieldNames = ['env', 'subtype', 'submitter', ...];
$fields = $request->only($fieldNames);

这看起来比我的方法更好。+1 - FirstOne
我不知道这是个事情!看起来很完美。谢谢! - Ross

2
您可以这样做:
// Define the field names you want to get from the request
/*
$fields = array(
    'env',
    'subtype',
    'submitter',
    ...
);
*/

$data = array();
foreach($fields as $v){
    $data[$v] = $request->get($v);
}

它只会获取请求中在$fields中定义的键的值,并将其放入$data数组的相同键中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接