1

私はPHPが初めてです。友人が私がこれを学ぶのを手伝ってくれましたが、彼はしばらく連絡が取れません. 私はいくつかのことが単に意味をなさないかもしれないことを知っています (私は学んでおり、これが初心者向けの機能ではないことを知っています)。

目標: 1. 配列 ($lemons) 内の最高値と最低値を見つけます。2. 上記の値の配置を切り替えます。(IE: 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);

min()プログラミングの基本を学んでいる間は、やのような「ヘルパー」関数の使用を避けるようにしてくださいmax()。演習のポイントは、表面上、基本的なソートアルゴリズムの作成を開始するために必要な配列と論理演算に慣れることです。

于 2013-01-03T17:11:45.097 に答える