29.04.2012, 22:40
|
Профессор
|
|
Регистрация: 19.03.2012
Сообщений: 163
|
|
Двумерный массив
Не получается вывести двумерный массив. Читал вроде в учебнике что циклы могут не обязательно одинаковой длины строки и стобцы быть, вот попробовал написать код, чего-то не срабатывает.
<?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.' ';
?>
|
|
29.04.2012, 23:55
|
Профессор
|
|
Регистрация: 19.03.2012
Сообщений: 163
|
|
Вот так заработало.
Код:
|
<?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] . ' ';
} |
|
|
30.04.2012, 01:32
|
Профессор
|
|
Регистрация: 19.03.2012
Сообщений: 163
|
|
Ух-ты, вот так получилось.
Код:
|
<?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] . ' ';
}
?> |
|
|
30.04.2012, 02:57
|
Профессор
|
|
Регистрация: 19.03.2012
Сообщений: 163
|
|
Вот так правильнее, проверил секундомером с учетом если 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] . ' ';
}
?>
|
|
30.04.2012, 03:29
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
а чем foreach не угодил?
foreach( $array as $key => $value ) {
}
|
|
30.04.2012, 08:46
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
Сообщение от kilogram
|
проверил секундомером
|
всмысле вы реально взяли секундомер и им меряли время загрузки страницы?
|
|
01.05.2012, 13:45
|
Профессор
|
|
Регистрация: 19.03.2012
Сообщений: 163
|
|
Да, на телефоне нокиа 1200 есть секундомер, им проверил.
|
|
01.05.2012, 14:07
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
Сообщение от kilogram
|
Да, на телефоне нокиа 1200 есть секундомер, им проверил.
|
очень печальная история эта.
Есть более вменяемые способы измерения времени выполнения скриптов:
1)время выполнения скрипта на PHP
<?php
$start_time = microtime(true);
//измеряемый код
var_dump(round(microtime(true) - $start_time, 4));
2)время загрузки страницы - можно посмотреть в консоли разработчика во вкладке "сеть".
Сейчас консоль разработчика есть в каждом более-менее популярном десктопном браузере.
время загрузки основного файла складывается из мремени выоплнения скрипта, и времени загрузки его по сети
Последнее, в случае тестировании на локальной машине - мало, и иногда им можно пренебречь
3) время выполнения JS-скрипта(способ в консоли разработчика)
console.time('timer1');
//измеряемый код
console.timeEnd('timer1');
4)время выполнения JS-скрипта(нативный, без консоли)
var start = (new Date).getTime();
//измеряемый код
alert((new Date).getTime() - start);
|
|
|
|