Есть несколько проблем с вашим примером кода.
Массив $arr1
имеет 2 записи с ключами 0
и 1
, поэтому, если вы l oop 2 раза 2 значения, вы получите 4 значения вместо 6.
Затем для каждого ключа есть 3 записи, поэтому для второго l oop необходимо использовать count($arr1[$i])
, используя [$i]
для подсчета записей для этого ключа.
В циклах вы устанавливаете значение $i
на счетчик, вызывая бесконечное l oop $i=count($arr1)
, в то время как вы должны использовать вместо него знак <
.
В Во второй части, находящей наибольшее значение, вы должны сначала проверить, больше ли новое значение, чем текущее значение, иначе у вас всегда будет последнее значение.
$arr1[0][] = 110;
$arr1[0][] = 20;
$arr1[0][] = 526;
$arr1[1][] = 105;
$arr1[1][] = 56;
$arr1[1][] = 96;
echo "The given array is : <br>";
for ($i = 0; $i < count($arr1); $i++) {
for ($j = 0; $j < count($arr1[$i]); $j++) {
echo "\$arr1[$i][$j] =", $arr1[$i][$j], "<br>";
}
}
$b = 0;
foreach ($arr1 as $val) {
foreach ($val as $key => $val1) {
if ($val1 > $b)
$b = $val1;
}
}
echo "The maximum value in the array is =", $b;
Выход
The given array is :
$arr1[0][0] =110
$arr1[0][1] =20
$arr1[0][2] =526
$arr1[1][0] =105
$arr1[1][1] =56
$arr1[1][2] =96
The maximum value in the array is =526
См. Php демо
Как указывает @ Nick , вы также можете рассчитать максимальное значение для вложенных циклов напрямую:
$b = 0;
echo "The given array is :" . PHP_EOL;
for ($i = 0; $i < count($arr1); $i++) {
for ($j = 0; $j < count($arr1[$i]); $j++) {
if ($arr1[$i][$j] > $b) $b = $arr1[$i][$j];
echo "\$arr1[$i][$j] =", $arr1[$i][$j] . PHP_EOL;
}
}
Php демо