I have a multidimensional $array
that has a lot of various values. I am trying to get the maximum value in a given range in this case lets say the maximum value within x1,y0 and x2,y7, thus the result would be 6
using the data below.
It seems like a common problem for searching within coordinates in multidimensional array... but I cant find a simple solution and everything that I try to do seems to be rather extensive in the coding. I was wondering if there is a function that would allow me to search in this array using my criteria in an efficient way.
$array[0][0] = 1;
$array[0][1] = 10;
$array[0][3] = 3;
$array[1[0] = 1;
$array[1][1] = 1;
$array[2][5] = 6;
$max = null;
for ($x = $startx; $x <= $endx; $x++) {
for ($y = $starty; $y <= $endy; $y++) {
if (isset($array[$x][$y]) && ($max === null || $array[$x][$y] > $max)) {
$max = $array[$x][$y];
}
}
}
$array[0][0] = 1;
$array[0][1] = 10;
$array[0][3] = 3;
$array[1][0] = 1;
$array[1][1] = 1;
$array[2][5] = 6;
$max = false;
$x1 = 1; $x2 = 2;
$y1 = 0; $y2 = 7;
foreach($array as $x => $y_vals) {
if($x < $x1 || $x > $x2)
continue;
foreach($y_vals as $y => $val) {
if($y < $y1 || $y > $y2)
continue;
if(false === $max || $max < $val)
$max = $val;
}
}
print $max; //6
$array[0][0] = 1;
$array[0][1] = 10;
$array[0][3] = 3;
$array[1][0] = 1;
$array[1][1] = 1;
$array[2][5] = 6;
$vals = array();
foreach (new RecursiveIteratorIterator(
new RecursiveArrayIterator($array),
RecursiveIteratorIterator::LEAVES_ONLY
) as $value) {
$vals[] = $value;
}
$max = max($vals);
echo $max;
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.