|
|
|
| Не получается вывести двумерный массив. Читал вроде в учебнике что циклы могут не обязательно одинаковой длины строки и стобцы быть, вот попробовал написать код, чего-то не срабатывает.
<?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.' ';
?>
|
| |
|
|
|
|
|
|
|
для: kilogram
(29.04.2012 в 22:42)
| | Поиграю в интерпретатор) Я вам говорю:
Warning: Invalid argument supplied for foreach() in Z:\...\index.php on line 13
А сам себе думаю: от меня хотят foreach. Это что-то про массивы. А что мне дают? Мне дают «-3». А массив где? Это же int, ну string в крайнем случае. Warning! | |
|
|
|
|
|
|
|
для: kilogram
(29.04.2012 в 22:42)
| | Если вы просто хотите посмотреть, что внутри массива, то удобно воспользоваться функцией print_r()
<?php
echo "<pre>";
print_r($trans);
echo "</pre>";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(29.04.2012 в 23:10)
| | Вот так заработало.
<?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 'Я справился!';
echo '<br />';
|
Если через фор попробовать вывести вот так, не захочет, захочет только если поменять индекс 8 на 5, странно как-то. 5=> array("Вася","Петя","Коля")
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] . ' ';
}
|
| |
|
|
|
|
|
|
|
для: kilogram
(29.04.2012 в 23:52)
| | Ух-ты, вот так получилось.
<?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] . ' ';
}
?>
|
| |
|
|
|
|
|
|
|
для: kilogram
(30.04.2012 в 01:38)
| | Вот так правильнее, проверил секундомером с учетом если 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] . ' ';
}
?>
|
| |
|
|
|
|
|
|
|
для: kilogram
(30.04.2012 в 03:03)
| | А чем вам foreach не угодил, что вы так изголяетесь?
Тогда уж правильнее будет так:
<?php
$trans = array(
0 => array("Мама","Папа","Дядя",),
1 => -3,
2 => 105,
3 => 500,
4 => 'Andrey',
10000000 => array("Вася","Петя","Коля")
);
show_array( $trans );
function show_array($array)
{
$keys = array_keys($array);
$max = count($keys);
for ($i = 0; $i < $max; $i++)
{
if (is_array( $array[$keys[$i]] ))
show_array( $array[$keys[$i]] );
else
echo $array[$keys[$i]] . ' ';
}
}
?>
|
| |
|
|
|