为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 中每次迭代后恢复数组项

PHP 中每次迭代后恢复数组项

PHP
HUX布斯 2023-07-01 15:24:48
我试图在每次 for 循环迭代后恢复所有数组项。我需要设置 Laravel 验证Rule::notIn($arry)我有一个由克隆输入字段生成的数组station_id。我想检查所有克隆的车站 ID 是否唯一,因此请确保地铁路线中没有重复的车站。对于克隆字段,我通过计算克隆项目来设置使用 for 循环的规则。所以问题是,我想使用 `Rule::notIn($stationIds) 除了当前迭代项目 id,这样我就可以通过检查当前 id 不在数组项目的其余部分中来进行验证。public function rules(){        // getting all input fields value    $rStationIds = $this->get('station_id')    ...    // get the max number of input    $counter = $this->getMaxCount($rStationIds, ...);    $rules = [];    // loop through each item    for ($r = 0; $r < $counter; $r++) {                      unset($rStationIds[$r]);        $rules['station_id'][$r] = ['required', 'int', Rule::notIn($rStationIds)];    }    ...}上面代码中的问题是,当我访问unset($var)当前项目时,它永远不会重置回原始数组元素;因此,最后一个字段将没有任何内容可比较,因为数组将变空。我也可以使用任何其他方法来检查克隆站 ID 字段的唯一项目。
查看完整描述

1 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

将循环更改为:


// loop through each item

for ($r = 0; $r < $counter; $r++) {

    $temp = $rStationIds[$r];


    unset($rStationIds[$r]);


    $rules['station_id'][$r] = ['required', 'int', Rule::notIn($rStationIds)];


    $rStationIds[$r] = $temp;

}


查看完整回答
反对 回复 2023-07-01
  • 1 回答
  • 0 关注
  • 80 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信