php - 如何使用 PHP Laravel 合并数组?

标签 php laravel

我已经克隆了使用输入组准备的 HTML。某些复选框和单选按钮未选中。我想推送到选定的电子邮件。

我尝试过很多方法。

array_merge()

array_combine()

array_push()

array_merge_recursive()

但是这些都不起作用。或者我不知道如何让他们工作。

HTML

<div class="form-group">
    <label for="name">E-posta</label>
    <div class="input-group">
        <input type="email" class="form-control email-address" name="email[]" placeholder="E-Posta giriniz">
        <div class="btn-group">
            <label class="btn btn-default">
                <input class="primary-radio" type="radio" name="primary[]" checked autocomplete="off"> <span
                    class="fas fa-star"></span>
            </label>
            <label class="btn btn-default">
                <input class="ban-checkbox" type="checkbox" name="ban[]" autocomplete="off"> <span
                    class="fas fa-ban"></span>
            </label>
            <label class="btn btn-default">
                <input class="invalid-checkbox" type="checkbox" name="invalid[]" autocomplete="off"> <span
                    class="fas fa-exclamation-circle"></span>
            </label>
        </div>
    </div>
</div>

PHP

public function add(Request $request)
{
    $emails = $request->input('email');
    $primary = $request->input('primary');
    $ban = $request->input('ban');
    $invalid = $request->input('invalid');

    $emailAddresses = array();

    foreach ($emails as $emailKey => $emailValue) {
        $emailAddresses[$emailKey] = [
            'emailAddress' => $emailValue,
            'invalid' => $invalid,
            'lower' => $emailAddresses,
            'ban' => $ban,
            'primary' => $primary
        ];
    }
    dd($emailAddresses);
}

输出

array:3 [▼
  0 => array:5 [▼
    "emailAddress" => "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="40242f242933002c2936256e232f2d" rel="noreferrer noopener nofollow">[email protected]</a>"
    "invalid" => null
    "lower" => "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="e88c878c819ba884819e8dc68b8785" rel="noreferrer noopener nofollow">[email protected]</a>"
    "ban" => array:2 [▼
      0 => "on"
      1 => "on"
    ]
    "primary" => array:1 [▼
      0 => "on"
    ]
  ]
  1 => array:5 [▼
    "emailAddress" => "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="592d3c2a2d1935302f3c773a3634" rel="noreferrer noopener nofollow">[email protected]</a>"
    "invalid" => null
    "lower" => "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4337263037032f2a35266d202c2e" rel="noreferrer noopener nofollow">[email protected]</a>"
    "ban" => array:2 [▼
      0 => "on"
      1 => "on"
    ]
    "primary" => array:1 [▼
      0 => "on"
    ]
  ]
  2 => array:5 [▼
    "emailAddress" => "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="5f3d2a313b3e2630341f3336293a713c3032" rel="noreferrer noopener nofollow">[email protected]</a>"
    "invalid" => null
    "lower" => "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="9efcebf0faffe7f1f5def2f7e8fbb0fdf1f3" rel="noreferrer noopener nofollow">[email protected]</a>"
    "ban" => array:2 [▼
      0 => "on"
      1 => "on"
    ]
    "primary" => array:1 [▼
      0 => "on"
    ]
  ]
]

这样的输出就来了。不应该是这样的。这是我想要的示例。

0: {
        emailAddress: "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b0d2d9dcd7d9f0d5dbd9ded3d9dcd5c29ed3dfdd9ec4c2" rel="noreferrer noopener nofollow">[email protected]</a>"
        invalid: false
        lower: "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="ddbfb4b1bab49db8b6b4b3beb4b1b8aff3beb2b0f3a9af" rel="noreferrer noopener nofollow">[email protected]</a>"
        optOut: false
        primary: true
    }
1: {
        emailAddress: "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="e489918c8597818681a4818f8d8a878d888196ca878b89" rel="noreferrer noopener nofollow">[email protected]</a>"
        invalid: false
        lower: "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a6cbd3cec7d5c3c4c3e6c3cdcfc8c5cfcac3d488c5c9cb" rel="noreferrer noopener nofollow">[email protected]</a>"
        optOut: false
        primary: false
    }

我对我的英语感到抱歉。我希望我可以。如果您能提供帮助,我会很高兴。

最佳答案

尝试下面的代码,

我所做的是将数组索引添加到每个循环中以获得该索引的正确值,这里是您的

"ban" => array:2 [▼
  0 => "on"
  1 => "on"
]

是数组本身,因此第一个数组数据需要 0 索引。这同样适用于所有数组。

public function add(Request $request)
{
    $emails = $request->input('email');
    $primary = $request->input('primary');
    $ban = $request->input('ban');
    $invalid = $request->input('invalid');

    $emailAddresses = array();

    $i = 0;

    foreach ($emails as $emailKey => $emailValue) {
        $emailAddresses[$emailKey] = [
            'emailAddress' => $emailValue,
            'invalid' => $invalid[$i]?$invalid[$i]:'',
            'lower' => $emailAddresses,
            'ban' => $ban[$i]?$ban[$i]:'',
            'primary' => $primary[$i]?$primary[$i]:''
        ];
        $i++;
    }

    dd($emailAddresses);
}

关于php - 如何使用 PHP Laravel 合并数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58707746/

相关文章:

javascript - 如何在 Laravel 中拆分或分离序列化表单数据

php - Laravel 5.4 替换文件(如果存在)

未找到 PHP 类

PHP 配置 --bindir

Laravel 空白项目..这么多文件!可以以某种方式减少吗?

php - Laravel 5 中是否有任何机制可以删除未使用的上传文件?

php - 将原始 sql 查询转换为 laravel Eloquent 查询

php - 合并两个 MYSQL SELECT 查询

php - 如何将多个复选框值插入数据库?

php - 使用 PHP 生成 PDF 格式的出席列表