«Единственный способ творить великие дела – это любить то, что ты делаешь»
PHP


Поиск min и max значений массива

Задача - Поиск min и max значений массива

Задача заключается в том, что нужно найти минимальное и максимальное значения в массиве, и поменять их местами.

PHP-код

$ar = [11, -10, 1, 77, 0, 66, 22, 3, 8, 7];
	// Создаем $min и $max и присваиваем им значение 1-го элемента массива,
	// чтобы было от чего отталкиваться
	$min = $max = $ar[0];
	
// Поиск MAX и MIN
	foreach($ar as $key=>$value){		
		if($max < $value){
			$max = $value;
			$keyMax = $key;
		} 
		if($min > $value){
			$min = $value;
			$keyMin = $key;
		} 
	}
	echo "Максимальное значение массива и его Индекс<br>";
	echo $max."<br>";
	echo $keyMax;
	
	echo "<p>";
	
	echo "Минимальное значение массива и его Индекс<br>";
	echo $min."<br>";
	echo $keyMin;

// Меняем местами максимальное и минимальное значения
	
	echo "<p>Исходный массив<br>";
	print_r($ar);

// Можно поменять местами MAX и MIN так... Всё работает.
//	$ar[$keyMax] = $min;   - На место $max 'ставим' $min
//	$ar[$keyMin] = $max;   - На место $min 'ставим' $max

// Или создать третью/временную переменную	
	$tmp = $ar[$keyMax]; // Заносим в $tmp MAX
	$ar[$keyMax] = $min; // На место $max 'ставим' $min
	$ar[$keyMin] = $tmp; // На место $min 'ставим' $tmp
	
	echo "<p>Измененный массив<br>";
	print_r($ar);

Результат


Максимальное значение массива и его Индекс
77
3
Минимальное значение массива и его Индекс
-10
1

Исходный массив
Array ( [0] => 11 [1] => -10 [2] => 1 [3] => 77 [4] => 0 [5] => 66 [6] => 22 [7] => 3 [8] => 8 [9] => 7 )

Меняем местами максимальное и минимальное значения
Array ( [0] => 11 [1] => 77 [2] => 1 [3] => -10 [4] => 0 [5] => 66 [6] => 22 [7] => 3 [8] => 8 [9] => 7 )