1

我是 PHP 新手。一位朋友正在帮助我了解这一点,但他有一段时间没有空。我知道有些事情可能根本没有意义(我正在学习,而且我知道这不完全是初学者功能)。

目标: 1. 找出数组 ($lemons) 中的最高值和最低值。2. 切换所述值的位置。(即:6、2、7、8、0、9 --> 6、2、7、8、9、0)。

谢谢!

 <?php
 function switcheroo($lemons) {
    $min_lemons = min($lemons);
    $max_lemons = max($lemons);
    foreach ($lemons as $key => $value) {
        if ($max_lemons > 0) {
            $max_decoy = $min_lemons;
        }
        if ($min_lemons < 0) {
            $min_decoy = $max_lemons;
        }
    }
    return $lemons;
 }
 $lemons = array(6, 2, 7, 8, 0, 9);
 print_r(switcheroo($lemons));
 ?>
4

3 回答 3

2

试试这个.. 我不是最擅长 PHP,但我发现这很有趣!

<?php
$array = array(3,6,12,7,3,6);
print_r($array);

$max = max($array);
$min = min($array);
$maxKey = array_search($max, $array);
$minKey = array_search($min, $array);

$array[$maxKey] = $min;
$array[$minKey] = $max;

echo '<br />';
print_r($array);
?>
于 2013-01-03T17:00:09.300 回答
1

这可能不是最优雅的解决方案,但它可以按预期工作:

$arr = array(6, 2, 7, 8, 0, 9);

echo 'Array before: <br /><pre>', print_r($arr, true);

function switcheroo($array) {
    $new_array = $array;

    $min_lemons = min($new_array);
    $max_lemons = max($new_array);

    $min_lemons_key = array_search($min_lemons, $new_array);
    $max_lemons_key = array_search($max_lemons, $new_array);

    $new_array[$min_lemons_key] = $max_lemons;
    $new_array[$max_lemons_key] = $min_lemons;

    return $new_array;
}

echo 'Array after: <br />', print_r(switcheroo($arr), true);
于 2013-01-03T16:52:44.410 回答
0

对于这样的事情,最好不要使用foreach语法,因为您没有使用关联数组,这会使使用数组变得更加困难,而且它并没有真正教给您太多东西。在这种情况下,一个简单的for循环是最好的,同时也是跨语言的主要内容。

// prepare the lemons.
$lemons = array(6, 2, 7, 8, 0, 9);
print_r($lemons);

// initialize these values to assume that the first element is
// both the max and min as the initial basis for comparison.
$cur_max = $lemons[0];
$cur_max_index = 0;
$cur_min = $lemons[0];
$cur_min_index = 0;

// iterate through the array
for( $i=0; $i<count($lemons); $i++ ) {
    if( $lemons[$i] > $cur_max ) {
        $cur_max = $lemons[$i];
        $cur_max_index = $i;
    } else if( $lemons[$i] < $cur_min ) {
        $cur_min = $lemons[$i];
        $cur_min_index = $i;
    }
}

// do the swap. I am ignoring the fact that we already have the
// max/min values to illustrate a 'proper' swap.
$temp_val = $lemons[$cur_min_index];
$lemons[$cur_min_index] = $lemons[$cur_max_index];
$lemons[$cur_max_index] = $temp_val;

print_r($lemons);

在学习编程基础知识时,应尽量避免使用 'helper' 函数,如min()max()。从表面上看,练习的目的是让您熟悉开始编写基本排序算法所需的数组和逻辑操作。

于 2013-01-03T17:11:45.097 回答