在 PHP 中的每次迭代后恢复数组项
Restore array items after every iteration in PHP
我试图在每次 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 字段的唯一项。
将循环更改为:
// 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;
}
我试图在每次 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 字段的唯一项。
将循环更改为:
// 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;
}