Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вложенные циклы
 
 автор: Max Vasin   (29.03.2008 в 22:56)   письмо автору
 
 

Насколько медленно будет работать такая конструкция? Есть ли другой вариант реализации?
<?php
$test=array("1"=>array (
    "z"=>"Вопрос_1","a"=>array(
    "ответ_1;",
    "ответ_2;",
    "ответ_3;",
    "ответ_4;",
    "ответ_5.")),"2"=>array (
    "z"=>"Вопрос_2","a"=>array(
    "ответ_1;",
    "ответ_2;"
    )));

foreach($test as $v)
    foreach ($v as $d=>$f)
    if ($d=="z") echo "<h1>".$f."</h1><br>";
    else {
        foreach ($f as $k)
    echo "<input type=\"radio\">".$k."<br>";}

?> 


----
Regards, Max Vasin.

   
 
 автор: Atheist   (29.03.2008 в 23:23)   письмо автору
 
   для: Max Vasin   (29.03.2008 в 22:56)
 

Как-то у тебя мутновато получилось.

<?php
foreach( $test as $v )
{
    echo 
'<h1>' $v['z'] . '</h1><br />';

    for(
$i 0$i count($v['a']); $i++)
    {
        echo 
'<input type="radio">' $v['a'][$i] . '<br />';
    }
}


foreach быстрее, чем for будет, но foreach копирует массив в памяти, а for нет. Выбирай сам.
Но это слишком ерундовая задача, чтобы мучиться с выбором.

   
 
 автор: \'.'/   (30.03.2008 в 01:04)
 
   для: Atheist   (29.03.2008 в 23:23)
 

и похоже побыстрее должно работать если сделать
два массива попроще вместо одного такой навороченой структуры,

<?php
list($headtime$time) = explode(chr(32), microtime());
$headtime = ($time $headtime); 

$i 0;
$test=array(
"1"=>array ("z"=>"Вопрос_1","a"=>array( "ответ_1;""ответ_2;""ответ_3;""ответ_5.")),
"2"=>array ("z"=>"Вопрос_2","a"=>array("ответ_1;""ответ_2;")),
"3"=>array ("z"=>"Вопрос_3","a"=>array( "ответ_1;""ответ_2;""ответ_3;")),
"4"=>array ("z"=>"Вопрос_4","a"=>array("ответ_1;""ответ_2;")),
); 
function 
tests()
{
 global 
$test;
  foreach(
$test as $v
   foreach (
$v as $d=>$f)
    if (
$d=="z") echo "<h1>".$f."</h1><br>"
    else { 
        foreach (
$f as $k
        echo 
"<input type=\"radio\">".$k."<br>";
    } 
}

 echo 
'<textarea>';
do { 
tests(); } while(($i++) < 1000);
 echo 
'</textarea>';
// [_0.0617_]  ..... [_0.1409_] 

list($msec,$sec) = explode(chr(32), microtime());
echo  
'<hr />[_' round(($sec $msec) - $headtime4) . '_]';
?>


<?php
list($headtime$time) = explode(chr(32), microtime());
$headtime = ($time $headtime);  # время начала работы

$i 0;
$test=array(
"1"=>array( "ответ_1;""ответ_2;""ответ_3;""ответ_5."),
"2"=>array("ответ_1;""ответ_2;"),
"3"=>array( "ответ_1;""ответ_2;""ответ_3;"),
"4"=>array("ответ_1;""ответ_2;")
); 

$test2 = array("1" => "Вопрос_1""2" => "Вопрос_2""3" => "Вопрос_3""4" => "Вопрос_4");

function 
tests()
{
 global 
$test$test2;
foreach (
$test as $k => $v)
    echo 
"<h1>".$test2[$k]."</h1><br>"
    foreach (
$v AS $otv) echo "<input type=\"radio\">".$otv."<br>";
}

 echo 
'<textarea>';
do { 
tests(); } while(($i++) < 1000);
 echo 
'</textarea>';
// [_0.05_]  ..... [_0.07_] 

list($msec,$sec) = explode(chr(32), microtime());
echo  
'<hr />[_' round(($sec $msec) - $headtime4) . '_]';
?>

осталось проверить все варианты с массивами всех других оставшихся разновидностей :)
и циклами

   
 
 автор: Max Vasin   (30.03.2008 в 01:50)   письмо автору
 
   для: \'.'/   (30.03.2008 в 01:04)
 

спасибо, отличный пример)
0.0243 и 0.0063 соответственно.
результат более чем наглядный.
хорошо хоть немного накодил.

----
Regards, Max Vasin.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования