【问题标题】:PHP Associative Array Variable AssignmentPHP 关联数组变量赋值
【发布时间】:2016-11-21 16:30:37
【问题描述】:

我将这段代码放在一个更大的函数中,该函数从 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'),
    );

【问题讨论】:

  • 定义“更好的方式”。这看起来非常好。
  • 它没有->all() 方法或类似的方法吗?
  • @FirstOne 是的,有一个 $request->all() 方法,但如果来自发布方的错误(例如,无关字段),我需要确保我只得到这些字段。 ->all() 会把所有东西都发给我。
  • @SverriM.Olsen 这行得通,但至少在我看来,看起来很乱。我正在考虑像 zerkms 建议的循环。
  • @Ross 有什么问题?如果您愿意,该代码可能看起来相当“庞大”,但它会准确地告诉您发生了什么。循环只会使它复杂化。代码直截了当总是比做“聪明”的事情要好,因为它看起来更好。

标签: php arrays laravel


【解决方案1】:

你可以这样做:

// 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 数组中。

【讨论】:

    【解决方案2】:

    有什么问题:

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

    或:

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

    【讨论】:

    • 这看起来比我的方法好。 +1
    • 我不知道这是一件事!这看起来很完美。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多