@xGreen_Max

Из двух циклов сделать один?

Есть два цикла, один цикл выводит значения по умолчанию,
а другой присваивает этим значениям по умолчанию три значения из GET запросов.

Как сделать один цикл, с этим же функционалом?
Это хорошая идея?
Или лучше пусть будут два отдельных цикла?
Просто не хочется писать много циклов.

$request = $_GET;
$show =["name1" => "по умолчанию", "age1" => "по умолчанию", "weight1" => "по умолчанию"];

foreach($request as $key => $items){
if(isset($request)){
$show[$key] = $items;
}}

foreach($show as $items){
echo $items."<br>";
}


<form method ="GET">   
Форма:                                                                                     
<div> Имя:     <input type="text" name="name1" />    </div>     
<div> Возраст: <input type= "number" name="age1" /> </div>  
<div> Вес:     <input type= "number" name="weight1" /> </div>  
<input type="submit" value="Отправить">
</form>
  • Вопрос задан
  • 213 просмотров
Решения вопроса 2
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
$show =["name1" => "по умолчанию", "age1" => "по умолчанию", "weight1" => "по умолчанию"];

foreach($show as $key => $items){
    $show[$key] = (isset($_GET[$key]) AND strlen($_GET[$key])) ? $_GET[$key] : $items;
    echo "{$show[$key]}<br>";
}
Ответ написан
Compolomus
@Compolomus Куратор тега PHP
Комполом-быдлокодер
$result = [];
foreach($request as $key => $items){
    $res = (!array_key_exists($key, $show)) ? $show[$key] : $items;
    echo $res;
    $result[$key] = $res;
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
sergiks
@sergiks Куратор тега PHP
♬♬
array_merge() наложит на дефолтные значения то, что передали из формы.

$args = [
    'name1' => FILTER_SANITIZE_STRING,
    'age1' => FILTER_SANITIZE_NUMBER_INT,
    'weight1' => FILTER_SANITIZE_NUMBER_FLOAT,
];

$defaults = [
    "name1" => "по умолчанию",
    "age1" => "по умолчанию",
    "weight1" => "по умолчанию",
];

$results = array_merge($defaults, filter_input_array(INPUT_GET, $args));

// вывод
foreach ($results as $name => $value) {
    printf('<p>%s: %s</p>', $name, $value);
}
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
<form method ="GET">   
Форма:                                                                                     
   <div> Имя:     
      <input type="hidden" name="name1" value="по умолчанию"/>
      <input type="text" name="name1" />    
   </div>     
...
   <input type="submit" value="Отправить">
</form>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы