[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Двумерный массив
kilogram
Не получается вывести двумерный массив. Читал вроде в учебнике что циклы могут не обязательно одинаковой длины строки и стобцы быть, вот попробовал написать код, чего-то не срабатывает.


<?php
$trans = array(
0=> array("Мама","Папа","Дядя",),
1 => -3,
2 => 105,
3=>500,
4=>'Andrey',
8=> array("Вася","Петя","Коля")
);



foreach($trans as $x)
foreach($x as $y)
echo $x.' '.$y.' ';

?>






Спустя 17 минут, 50 секунд (29.04.2012 - 20:59) Invis1ble написал(а):
foreach ($trans as $data)
{
if (is_array($data))
foreach ($data as $item)
echo $item . '<br />';
else
echo $data . '<br />';
}

а вообще
var_dump($trans);

или
echo '<pre>' . print_r($trans, true) . '</pre>';

var_dump лучше

Спустя 4 минуты, 32 секунды (29.04.2012 - 21:04) walerus написал(а):
Забыл проверку сделать
<?php
$trans = array(
0=> array("Мама","Папа","Дядя",),
1 => -3,
2 => 105,
3=>500,
4=>'Andrey',
8=> array("Вася","Петя","Коля")
);



foreach($trans as $x)
{
if ( is_array($x) )
{
foreach($x as $y)
echo $x . ' ' . $y . " <br>\n"; // что бы с новой строки
}
else
echo $x . " <br>\n"; // что бы с новой строки
}
?>

Спустя 31 секунда (29.04.2012 - 21:04) walerus написал(а):
Invis1ble Опередил )

Спустя 9 минут, 35 секунд (29.04.2012 - 21:14) kilogram написал(а):
А циклом фор не пашет чего-то.

for ($i = 0; $i < count($trans); $i++)
{
if (is_array($trans[$i]))
for ($j = 0; $j < count($trans[$i]); $j++)
echo $trans[$i][$j] . ' ';
else
echo $trans[$i] . ' ';
}

Спустя 37 минут, 56 секунд (29.04.2012 - 21:52) walerus написал(а):
kilogram какая ошибка выдается?

Спустя 5 минут, 54 секунды (29.04.2012 - 21:58) kilogram написал(а):
Вот такой вывод выходит:
Цитата
Мама Папа Дядя -3 105 500 Andrey Вася Петя Коля
Мама Папа Дядя -3 105 500 Andrey
Notice: Undefined offset: 5 in C:\www\htdocs\test.ru\www\index.php on line 24

Notice: Undefined offset: 5 in C:\www\htdocs\test.ru\www\index.php on line 28



<?php
$trans = array(
0=> array("Мама","Папа","Дядя",),
1 => -3,
2 => 105,
3=>500,
4=>'Andrey',
8=> array("Вася","Петя","Коля")
);


foreach($trans as $x)
{
if (is_array($x))
foreach ($x as $y)
echo $y . ' ';
else
echo $x . ' ';
}

echo '<br />';

for ($i = 0; $i < count($trans); $i++)
{
if (is_array($trans[$i]))
for ($j = 0; $j < count($trans[$i]); $j++)
echo $trans[$i][$j] . ' ';
else
echo $trans[$i] . ' ';
}
?>

Спустя 44 минуты, 5 секунд (29.04.2012 - 22:42) Adamant написал(а):
Зачем вам сдалась эта for() ? Пусть за вас считает нумерацию и кол-во индексов сама PHP.

А ошибка вам выдается потому, как у вас просто нет в вашем массиве элемента с индексом [5]

Спустя 5 минут, 37 секунд (29.04.2012 - 22:47) kilogram написал(а):
А через оператор contunue может как-то перелететь можно используя фор?

Спустя 50 минут, 24 секунды (29.04.2012 - 23:38) kilogram написал(а):
Ух-ты, вот так получилось.

<?php
$trans = array(
0=> array("Мама","Папа","Дядя",),
1 => -3,
2 => 105,
3=>500,
4=>'Andrey',
8=> array("Вася","Петя","Коля")
);



if(!empty($r))echo 'не существует';

echo '<br />';

for ($i = 0; $i < count($trans); $i++)
{
if(empty($trans[$i])) continue;
if (is_array($trans[$i]))
for ($j = 0; $j < count($trans[$i]); $j++)
echo $trans[$i][$j] . ' ';
else
echo $trans[$i] . ' ';
}
?>

Спустя 1 час, 8 минут, 8 секунд (30.04.2012 - 00:46) Adamant написал(а):
continue пропускает весь дальнейший код (до закрывающей фигурной скобки), но это не значит, что итерация не проходит, $i все равно увеличивается на 1, а так как у вас количество элементов в вашем массиве - count($trans) остается все тем же - 6, то до вашего последнего элемента массива просто не дойдет "очередь" в цикле for

Спустя 19 минут, 33 секунды (30.04.2012 - 01:05) kilogram написал(а):
Вот так правильнее, проверил секундомером с учетом если 10 млн номер индекса последний, код запускается чере 14,16 сек. в браузере.


<?php
$trans = array(
0 => array("Мама","Папа","Дядя",),
1 => -3,
2 => 105,
3 => 500,
4 => 'Andrey',
10000000 => array("Вася","Петя","Коля")
);


end($trans);
$max = key($trans);

for ($i = 0; $i <= $max; $i++)
{
if (!array_key_exists($i, $trans)) continue;
if (is_array($trans[$i]))
for ($j = 0; $j < count($trans[$i]); $j++)
echo $trans[$i][$j] . ' ';
else
echo $trans[$i] . ' ';
}
?>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.