Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.04.2012, 22:40
Профессор
Отправить личное сообщение для kilogram Посмотреть профиль Найти все сообщения от kilogram
 
Регистрация: 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.' ';
		
?>
Ответить с цитированием
  #2 (permalink)  
Старый 29.04.2012, 23:55
Профессор
Отправить личное сообщение для kilogram Посмотреть профиль Найти все сообщения от kilogram
 
Регистрация: 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] . ' ';
}
Ответить с цитированием
  #3 (permalink)  
Старый 30.04.2012, 01:32
Профессор
Отправить личное сообщение для kilogram Посмотреть профиль Найти все сообщения от kilogram
 
Регистрация: 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] . ' ';
}
?>
Ответить с цитированием
  #4 (permalink)  
Старый 30.04.2012, 02:57
Профессор
Отправить личное сообщение для kilogram Посмотреть профиль Найти все сообщения от kilogram
 
Регистрация: 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] . ' ';
}
?>
Ответить с цитированием
  #5 (permalink)  
Старый 30.04.2012, 03:29
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

а чем foreach не угодил?
foreach( $array as $key => $value ) {
}
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #6 (permalink)  
Старый 30.04.2012, 08:46
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,245

Сообщение от kilogram
проверил секундомером
всмысле вы реально взяли секундомер и им меряли время загрузки страницы?
Ответить с цитированием
  #7 (permalink)  
Старый 01.05.2012, 13:45
Профессор
Отправить личное сообщение для kilogram Посмотреть профиль Найти все сообщения от kilogram
 
Регистрация: 19.03.2012
Сообщений: 163

Да, на телефоне нокиа 1200 есть секундомер, им проверил.
Ответить с цитированием
  #8 (permalink)  
Старый 01.05.2012, 14:07
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,245

Сообщение от 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);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ДвумернЫй массив в базу и обратно Alexonus Общие вопросы Javascript 7 13.03.2013 18:05
Разбор json-строки на стороне клиента (двумерный массив) Триви Общие вопросы Javascript 12 25.07.2011 17:20
Двумерный массив antserg Общие вопросы Javascript 1 14.05.2011 11:46
Очистить двумерный массив vah-smile Элементы интерфейса 7 30.03.2011 15:26
Двумерный массив Destrifer Общие вопросы Javascript 2 22.01.2010 03:10