2013-08-25 2 views
1

Вот очень упрощенный пример того, что я пытаюсь достичь:Как эхо-переменная зависит от конкретного поля в таблице?

GIFT 
sender | type 
phil | 1 
phil | 2 

Здесь 1 = торт и 2 = булочка.

$table = query("SELECT sender, type FROM users WHERE sender = Phil"); 
foreach ($table as $row) { 
$sender = $row['sender']; 
$type = $row['type']; 

echo '$sender has bought a $type'; 
} 

Это Выведет:

Phil has bought a 1 
Phil has bought a 2 

Как я могу получить ниже выход вместо этого?

Phil has bought a cake 
Phil has bought a muffin 

Должен ли я использовать массив?

$type = array(
1 => 'cake', 
2 => 'muffin' 
); 

Проблема $ type уже определена как $ row ['type'].

ответ

0

Учитывая ваш пример, я хотел бы использовать массив, как это:

$items = array(
    "1" => "cake", 
    "2" => "muffin" 
); 

Тогда это сделать:

echo "$sender has bought a {$items[$type]}"; 
1

Используйте ассоциативный массив, который связывает число с именами:

$types = array(1 => 'cake', 2 => 'muffin'); 

Затем используйте его как:

echo "$sender has bought a {$types[$type]}"; 

Обратите внимание, что вы должны использовать doublequotes для переменных, которые должны быть расширены внутри строки, а не одиночные кавычки, как в вашем коде.

1

Или, если вы хотите, чтобы это вернуть из базы данных:

$table = query("SELECT sender, 
       case when type = '1' then 'cake' 
        when type = '2' then 'muffin' 
       end as type 
       FROM users WHERE sender = Phil"); 

foreach ($table as $row) { 
    $sender = $row['sender']; 
    $type = $row['type']; 

    echo "$sender has bought a $type"; //Use double quotes for $sender and $type to be interpolated. 
} 
Смежные вопросы