|
|
|
| Насколько медленно будет работать такая конструкция? Есть ли другой вариант реализации?
<?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. | |
|
|
|
|
|
|
|
для: 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) - $headtime, 4) . '_]';
?>
|
<?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) - $headtime, 4) . '_]';
?>
|
осталось проверить все варианты с массивами всех других оставшихся разновидностей :)
и циклами | |
|
|
|
|
|
|
|
для: \'.'/
(30.03.2008 в 01:04)
| | спасибо, отличный пример)
0.0243 и 0.0063 соответственно.
результат более чем наглядный.
хорошо хоть немного накодил.
----
Regards, Max Vasin. | |
|
|
|