Intereting Posts
Обращайтесь со всеми исключениями, помещенными в flashMessage с ZF2 Получите последние значения в GROUP BY, используя Laravel Rloquent ORM Как установить глобальную переменную, доступную во всем приложении ZipArchive :: getStatusString (): недопустимый или неинициализированный объект Zip Получить корневую запись DNS с сервера php; получить доменное имя без www, ect ORM Doctrine ManyToOne по обновлению CASCADE (Symfony) Месяцы не отображаются корректно с помощью php Комментировать ассоциативный массив в PHP-документе Акцентированные символы в таблице mySQL Не удалось подключиться к Google Cloud sql PHP – обнаружение ошибки / вставки mysql из-за нарушения уникального ограничения Как вызвать исполняемый банку из php с аргументом, переданным основному методу Есть ли эквивалентная функция, которая возвращает символ в позиции `X` в PHP? Сценарий вычисления Javascript для вычисления входного значения формы затем сохраните как скрытый ввод для page2.php MPDF показывает дополнительную страницу в конце

PHP – найти min / max в многомерном массиве

Мне нужно найти минимум и максимум в многомерном массиве в PHP, у меня есть то, что, как я думал, будет работать ниже, но оно продолжает давать мне ошибку синтаксического анализа, это домашнее задание, и я не прошу кого-либо сделать это для меня, но я новичок, и любая помощь будет оценена по достоинству.

<?php /* 2 dimensional array in PHP - strictly an array of arrays */ $multable[] = array("11", "12", "15", "22", "41", "42"); $multable[] = array("6", "7", "16", "17", "22", "23"); $multable[] = array("1", "15", "16", "20", "22", "3"); # --------------------------------------------- ?> <html> <head> <title>An array of arrays in PHP</title> </head> <body bgcolor=white> <h2>Two dimensional array</h2><br> <table border=2 cellpadding=2 cellspacing=2> <?php /* display a table from a 2D array */ for ($j=0;$j<3;$j++) { print "<tr>"; for ($k=0;$k<6;$k++) { echo "<td>",$multable[$j][$k],"</td>"; } print "</tr>"; $max_value = 0; foreach ($multable as $myMax) { if ($max_value<$myMax) { $max_value = $myMax; } } echo $max_value; ?> </table> </body> </html> 

Для этого есть и однострочный:

 $max = max( array_map("max", $multable) ); 

используйте функции max() и min() php.

Максимум:

 <?php $multable = array(); $multable[] = array("11", "12", "15", "22", "41", "42"); $multable[] = array("6", "7", "16", "17", "22", "23"); $multable[] = array("1", "15", "16", "20", "22", "3"); $max = -99999999; foreach($multable as $sub){ $tempMax = max($sub); if($tempMax > $max){ $max = $tempMax; } } echo $max; ?> 

Вы можете выяснить min 🙂

Ваша итерация foreach только одно измерение – каждый $myMax является одним из ваших шести списков элементов, а не отдельным скалярным значением. Вот почему ваше сравнение не работает, и условие не является истинным, вы пытаетесь сравнить скаляр с массивом. То, что вы называете $myMax , более целесообразно называться $currentRow

Это нормально, потому что PHP имеет некоторые функции для поиска min и max массива

http://us.php.net/manual/en/function.min.php
http://us.php.net/manual/en/function.max.php

 $max_value = 0; $min_value = $multable[0][0]; foreach ($multable as $currentRow) { // COMPARE CURRENT ROW's MIN/MAX TO MIN/MAX_VALUE // AND MAKE NEW ASSIGNMENT IF APPROPRIATE } 

Или передайте это и посмотрите, что говорит ваш учитель:

 function fComp ($f) {return function ($a,$b) use ($f) {return $f($a, $f($b));};} $max = array_reduce($multable, fComp('max'), $multable[0][0]); $min = array_reduce($multable, fComp('min'), $multable[0][0]); echo "max: $max <br />"; echo "min: $min"; 

PS – в ваших предыдущих итерациях для создания таблицы HTML было бы хорошей формой потерять константы. Используйте count чтобы получить длину массива вместо этого – или еще лучше – используйте foreach как и в дальнейшем. (Даже с foreach вам все равно нужно, чтобы два из них были вложенными, он не выполняет итерацию двухмерного массива по элементам)

Для минимального значения

 echo min(array_map("min", $multable)); 

Максимальное значение

 echo max(array_map("max", $multable)); 
 $minArray = array(); foreach($arrayVal as $arrI=> $arrK) { if($arrK == min($arrayVal ) ) { array_push($minArray , $arrayVal ); } } print_r($minArray); 

Ну вот 🙂