gpt4 book ai didi

php - 如何减去数组的值但仍在位置

转载 作者:行者123 更新时间:2023-12-04 10:01:12 24 4
gpt4 key购买 nike

如果该值大于特定数据,如何减去数组的值?
例如:
我有一组菜单位置 [0,3,10,5,6,9,2,7,1,4,8,11]我想减去所有大于 selectedDeletedNumbers 的值并留在他们的位置。
示例:如果我删除 35 .我正在使用复选框删除
并且输出应该是这样的。[0,8,4,7,2,5,1,3,6,9]大于 3减去 1 ,并且大于 5减去 2因为我选择了 2数字。
HTML

@foreach ($columns as $key => $column)
<div class="checkbox checkbox-danger col-xs-6 el{{ $column->Field }}">
<input type="checkbox" name="CheckboxDelete[]" id="check{{ $column->Field }}" data-column="{{ $key }}" value="{{ $column->Field }}">
<label for="check{{ $column->Field }}"><b style="color: grey">{{ strtoupper($column->Field) }}</b></label>
</div>
@endforeach
这是我的代码,但它仅在删除 1 时才出现,并且不在某个位置。
$searchArr = array_search( $selectedDeletedNumbers, $items);
unset($items[$searchArr]);
$numbers = [];
foreach ($items as $item) {
if ($item > $col[1])
$numbers[] = $item - 1;
}
提前致谢。

最佳答案

为了清晰和简洁,我将您的输入数据称为:

$array = [0, 3, 10, 5, 6, 9, 2, 7, 1, 4, 8, 11];
$deletes = [3, 5];

我的任何一个片段都不需要排序或准备。

以下两项的输出是:
array (
0 => 0,
1 => 8,
2 => 4,
3 => 7,
4 => 2,
5 => 5,
6 => 1,
7 => 3,
8 => 6,
9 => 9,
)

主要基于函数的方法:( Demo )
foreach (array_diff($array, $deletes) as $value) {
$result[] = array_reduce(
$deletes,
function ($carry, $item) use ($value) {
return $carry - ($value > $item);
},
$value
);
}
var_export($result);

*注: ($value > $item)将评估为 truefalse ,当用于算术时, true = 1false = 0 .

基于语言结构的方法:( Demo )
foreach ($array as $value) {
foreach ($deletes as $delete) {
if ($value == $delete) {
continue 2; // goto next value in outer loop without pushing
}
if ($value > $delete) {
--$value; // decrement value
}
}
$result[] = $value; // push adjusted value into result array
}
var_export($result);

此代码段的优点是声明了零个函数调用和最少的变量。

关于php - 如何减去数组的值但仍在位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61812232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com