2016-07-31 2 views
0

У меня есть код if(), который будет таким длинным, и некоторые из них имеют общий код html. Я думаю, что лучшим способом является вызов каждой базы данных html в условии if. Посмотрите на мой код, например. if $fruit='apple', я хочу повторить код html-кода 1,3,5. Как мне сделать глобальную функцию для вопросов?Как создать глобальную функциональную базу в этой ситуации php?

<?php 
    if($fruit=='apple'){ 
    /*call question 1,3,5*/ 
    }else if($fruit=='banana'){ 
    /*call question 1,2,4*/ 
    }/*.........a lot of else if.....*/ 

    /*question 
    1. <div>Is it good?</div> 
     .............some multiple choice here 
     <input type="text" value="submit"/> 
    2. <div>where is it from?</div> 
     .............some multiple choice here 
     <input type="text" value="submit"/> 
    3. <div>...........</div> 
     .............some multiple choice here 
     <input type="text" value="submit"/> 
    4. <div>..........</div> 
     .............some multiple choice here 
     <input type="text" value="submit"/> 
    */ 

?> 
+2

организовать в массив '$ обр = [ 'яблоко' => [1,3,5], 'банан' => [1, 2,4]] 'ecc – 0x13a

+1

В качестве дополнительной заметки некоторые люди предпочитают r [переключатель] (http://php.net/manual/en/control-structures.switch.php), когда есть много переключателей 'elseif' – FirstOne

+0

? Быстрее? – conan

ответ

1

Вы могли бы написать такой код:

$fruit = "apple"; 

if (in_array($fruit, ["apple", "banana"])) { 
    echo '<div>Is it good?</div> 
     .............some multiple choice here 
     <input type="text" value="submit"/>'; 
} 
if (in_array($fruit, ["banana", "pineapple"])) { 
    echo '<div>where is it from?</div> 
     .............some multiple choice here 
     <input type="text" value="submit"/>'; 
} 
// etc... 

Есть, конечно, и другие способы сделать это. Вы могли бы построить структуру данных, что дает вам всю необходимую информацию, в том числе HTML, а затем с помощью всего лишь небольшой петлей для вывода выбранного HTML:

$fruit = "apple"; 

$questions = array(
    "1" => array(
     "question" => "Is it good?", 
     "answers" => ["Fantastic", "So-so", "Never again"] 
    ), 
    "2" => array(
     "question" => "Where is it from?", 
     "answers" => ["South America", "Africa", "Australia"] 
    ), 
    "3" => array(
     "question" => "Which color does it have", 
     "answers" => ["Yellow", "Red", "Orange"] 
    ), //...etc 
); 
$questionsForFruits = array(
    "apple" => [1, 3], 
    "banana" => [1, 2], 
    "pineapple" => [2] 
); 

$fruit = "apple"; 

foreach($questionsForFruits[$fruit] as $questionNo) { 
    $q = $questions[$questionNo]; 
    echo "<div>{$q['question']}</div> 
      <select>"; 
    foreach($q['answers'] as $index =>$answer) { 
     echo "<option value = '$index'>$answer</option>"; 
    } 
    echo "</select><br> 
      <input type='text' value='submit'/>"; 
} 
+0

Большое спасибо! – conan

1

Организуйте параметры в массив

$questions = [ 
     'q1' => '<div>Is it good?</div> 
       .............some multiple choice here 
       <input type="text" value="submit"/>', 
     'q2' => '<div>where is it from?</div> 
       .............some multiple choice here 
       <input type="text" value="submit"/>', 
     ]; 

$fruit_questions = [ 
     'apple' => [1,3,5], 
     'banana' => [1,2,4], 
     'guava' => [17,21,4], 
     ]; 

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

$question_keys = $fruit_questions[$fruit]; 

$html_of_questions = ''; // This will hold the questions to echo 
foreach($question_keys as $question_key){ 
    $html_of_questions .= $questions['q'.$question_key] 
} 

echo $html_of_questions; 
+1

Большое спасибо! Ваш код очень прост и хорош. Очень умно! – conan

Смежные вопросы