php怎么去掉最高分和最低分

fiy 其他 133

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    PHP如何去除最高分和最低分?

    如果你想在PHP中去除数组中的最高分和最低分,可以按照以下步骤进行操作:

    1. 创建一个数组,其中包含所有分数。
    “`php
    $scores = [80, 90, 70, 85, 95];
    “`

    2. 使用`max()`和`min()`函数找到最高分和最低分。`max()`函数返回数组中的最大值,`min()`函数返回数组中的最小值。
    “`php
    $highestScore = max($scores);
    $lowestScore = min($scores);
    “`

    3. 使用`array_search()`函数找到最高分和最低分在数组中的索引。
    “`php
    $highestIndex = array_search($highestScore, $scores);
    $lowestIndex = array_search($lowestScore, $scores);
    “`

    4. 使用`unset()`函数从数组中移除最高分和最低分。`unset()`函数用于移除数组中的某个元素。
    “`php
    unset($scores[$highestIndex]);
    unset($scores[$lowestIndex]);
    “`

    5. 使用`array_values()`函数重新索引数组。`array_values()`函数返回一个包含数组所有值的新数组,原数组的键名被弃用。
    “`php
    $scores = array_values($scores);
    “`

    现在,你已经成功地移除了最高分和最低分。你可以使用`print_r()`函数打印数组,以确认最高分和最低分已被移除。
    “`php
    print_r($scores);
    “`

    请注意,如果数组中有多个分数相同的最高分或最低分,上述方法只会移除第一个遇到的最高分和最低分。如果你想移除所有相同的最高分和最低分,你需要在移除后继续重复进行上述步骤。

    2年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在PHP中,可以使用以下几种方法来去掉最高分和最低分:

    1. 使用数组函数array_filter()和array_search():
    – 首先,使用array_filter()函数过滤掉数组中的最大值和最小值,并返回一个新的数组。
    – 然后,使用array_search()函数找到最大值和最小值在原数组中的键,并使用unset()函数将它们从原数组中移除。

    示例代码如下:
    “`php
    $scores = [90, 80, 95, 70, 85];
    $max = max($scores);
    $min = min($scores);

    $newArray = array_filter($scores, function($value) use ($max, $min) {
    return $value != $max && $value != $min;
    });

    $minIndex = array_search($min, $scores);
    $maxIndex = array_search($max, $scores);

    unset($scores[$minIndex]);
    unset($scores[$maxIndex]);

    print_r($scores);
    “`

    2. 使用循环遍历数组:
    – 首先,使用max()和min()函数获取数组中的最大值和最小值。
    – 然后,使用foreach循环遍历数组,将不等于最大值和最小值的元素存储到新的数组中。

    示例代码如下:
    “`php
    $scores = [90, 80, 95, 70, 85];
    $max = max($scores);
    $min = min($scores);

    $newArray = [];
    foreach($scores as $score) {
    if($score != $max && $score != $min) {
    $newArray[] = $score;
    }
    }

    print_r($newArray);
    “`

    3. 使用数组函数array_diff()和array_slice():
    – 首先,使用array_diff()函数从原数组中移除最大值和最小值,并返回一个新的数组。
    – 然后,使用array_slice()函数获取新数组中的一部分(除去最高分和最低分的部分)。

    示例代码如下:
    “`php
    $scores = [90, 80, 95, 70, 85];
    $max = max($scores);
    $min = min($scores);

    $newArray = array_diff($scores, [$max, $min]);
    $newArray = array_slice($newArray, 0, count($newArray));

    print_r($newArray);
    “`

    4. 使用数组函数array_reduce()和array_filter():
    – 首先,使用array_reduce()函数找到数组中的最大值和最小值,并将其移除。
    – 然后,使用array_filter()函数过滤掉空值(即被移除的最大值和最小值)。

    示例代码如下:
    “`php
    $scores = [90, 80, 95, 70, 85];

    $max = array_reduce($scores, function($carry, $item) {
    return max($carry, $item);
    });

    $min = array_reduce($scores, function($carry, $item) {
    return min($carry, $item);
    });

    $newArray = array_filter($scores, function($value) use ($max, $min) {
    return $value != $max && $value != $min;
    });

    print_r($newArray);
    “`

    5. 使用递归函数:
    – 首先,使用递归函数找到数组中的最大值和最小值,并将其移除。
    – 然后,使用array_values()函数重新索引新数组。

    示例代码如下:
    “`php
    function removeMinMax($arr) {
    $max = max($arr);
    $min = min($arr);

    $key = array_search($max, $arr);
    if ($key !== false) {
    unset($arr[$key]);
    }

    $key = array_search($min, $arr);
    if ($key !== false) {
    unset($arr[$key]);
    }

    return array_values($arr);
    }

    $scores = [90, 80, 95, 70, 85];
    $newArray = removeMinMax($scores);

    print_r($newArray);
    “`

    这些方法都可以达到去掉最高分和最低分的效果,选择哪一种方法取决于个人习惯和代码的可读性。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    去掉最高分和最低分,即是在给定的一组数据中,去掉最大值和最小值后剩下的数据。在 PHP 中,可以使用以下方法来实现:

    1. 将数据进行排序,然后去掉第一个元素(最小值)和最后一个元素(最大值)。

    “`php
    function removeMinMax($data) {
    sort($data);
    array_shift($data); // 移除第一个元素(最小值)
    array_pop($data); // 移除最后一个元素(最大值)
    return $data;
    }
    “`

    2. 遍历一次数组,找到最大值和最小值的索引,然后移除这两个索引对应的元素。

    “`php
    function removeMinMax($data) {
    $minIndex = 0;
    $maxIndex = 0;

    for ($i = 1; $i < count($data); $i++) { if ($data[$i] < $data[$minIndex]) { $minIndex = $i; } if ($data[$i] > $data[$maxIndex]) {
    $maxIndex = $i;
    }
    }

    unset($data[$minIndex]); // 移除最小值
    unset($data[$maxIndex]); // 移除最大值

    return array_values($data); // 重新索引数组并返回
    }
    “`

    3. 使用 array_filter() 函数过滤掉最大值和最小值。

    “`php
    function removeMinMax($data) {
    $min = min($data);
    $max = max($data);

    $data = array_filter($data, function($value) use ($min, $max) {
    return $value != $min && $value != $max;
    });

    return array_values($data); // 重新索引数组并返回
    }
    “`

    以上是三种常用的方法,你可以根据自己的需求选择其中一种实现方式。在使用这些方法时,可以传入一组数据的数组作为参数,然后返回去掉最大值和最小值后的结果数组。例如:

    “`php
    $data = [90, 85, 95, 77, 92];
    $result = removeMinMax($data);
    print_r($result); // 输出 [90, 85, 92]
    “`

    注意:以上方法中的最大值和最小值指的是数值上的最大值和最小值。如果数组中包含字符串等其他类型的数据,需要根据具体需求进行处理。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部