|
|
|
| Дано:
5 текстовых переменных $txt1, $txt2, $txt3, $txt4, $txt5 - они могут быть как пустыми т.е. $txtx = "", так и содержать какое-то значение, необходимо получить $text, которая формируется исходя из следующих условий:
1. если все переменные пустые значит она также пустая, т.е. возможно решение:
$text = $txt1..$txt2..$txt3..$txt4..$txt5
|
2. если хотябы одна переменная не пустая то в начале пишется переменная $txt_s
3. между непустыми переменными пишется переменная $txt_a
Вариант с кучей вложенных условий в данном случае неприемлем (ну я его и сам написать могу) хотелось бы получить более просто решение данной задачи.
Решать ее не настаиваю, просто по возможности если у кого то появится желание, то буду очень признателен.
Применение этой задачи - создание условия для mysql-запроса.
Upd: да как вариант возможен массив $txt[...] | |
|
|
|
|
|
|
|
для: Полный Чайник
(02.02.2006 в 10:45)
| | Я бы предложил такое решение
<?php
$txt[] = $txt1;
$txt[] = $txt2;
$txt[] = $txt3;
$txt[] = $txt4;
$txt[] = $txt5;
$txt_s = "begin:";
$txt_a = ",";
$empty = true;
$total = count($txt);
for($i = 0; $i < $total; $i++)
{
if(empty($txt[$i])) unset($txt[$i]);
else $empty = false;
}
if($empty) $text = "";
else $text = $txt_s.implode($txt_a,$txt);
echo $text;
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(02.02.2006 в 14:00)
| | Да лично я решил эту задачу так:
<?php
$txt[] = $txt1;
$txt[] = $txt2;
$txt[] = $txt3;
$txt[] = $txt4;
$txt[] = $txt5;
$text = "";
$txt_a = " and ";
$txt_s = "where ";
for ($i=0; $i<5; $i++)
{
if ($txt[$i] != "")
{
$text = $text.$txt_a.$txt[$i];
}
}
if ($text != "")
{
$text = substr($text, 5);
$text = $txt_s.$text;
}
?>
|
так как я точно знал что у меня стоит в начале переменной, то сразу использовал функцию
$text = substr($text, 5);
|
а так естественно правильнее было бы определить длину переменной $txt_a; | |
|
|
|