0

当前情景:

表“主题”可能包含行“类型”,其中包含以下缩写:

  • 网络 - W,
  • 电子邮件 - E,
  • 电话-P

所以

if ( isset($topic['type'])) {
echo $topic['type'];

通常可以输出

W P

我的问题是如何输出全文而不是缩写,并有从全文到 url 的超链接,例如:

<a href='somesite.com/web'>Web</a> <a href='somesite.com/phone'>Phone</a>

到目前为止我所拥有的:

if ( isset($topic['type'])) {
    $typeArr = explode(' ',$topic['type']);
    $fulldesc = array(
        'W' => $lang['textentryW'], // textentryW equals Web
        'E' => $lang['textentryE'], // Email
        'P' => $lang['textentryP'], // Phone
    );
    foreach ($fulldesc as $abc => $name) {
        if(in_array($abc, $typeArr))
            // mental blank !!!
    }
4

2 回答 2

2

就像是:

if ( isset($topic['type'])) {
$typeArr = explode(' ',$topic['type']);
$fulldesc = array(
    'W' => $lang['textentryW'], // textentryW equals Web
    'E' => $lang['textentryE'], // Email
    'P' => $lang['textentryP'], // Phone
);
foreach ($typeArr as $type) {
    if(isset($fulldesc[$type])) {
        echo "<a href=\"somesite.com/" . strtolower($fulldesc[$type]) . "\">{$fulldesc[$type]}</a>";
    }
}
于 2013-02-25T02:50:27.490 回答
0

在最简单的情况下,您可以使用:

 echo $fulldesc[ $topic["type"] ];

已经$fulldesc包含最终的 HTML/链接以增加惰性。

foreach可能是多余的,如果可能出现意外的缩写字母,您只需要一个或您的测试issetin_array

if ( isset($topic['type'])) {
    $typeArr = explode(' ',$topic['type']);
    $fulldesc = array(
        'W' => $lang['textentryW'],
        'E' => $lang['textentryE'],
        'P' => "<a href='somesite.com/phone'>$lang[textentryP]</a>",
    );
    if (isset($fulldesc[ $topic["type"] ])) {
        echo $fulldesc[ $topic["type"] ];
    }
    else {
        echo "<a href='somesite.com/UNKNOWN'>$topic[type]</a>";
    }

另外,题外话:您应该使用简单的英语作为$lang占位符,以便有一天可以更轻松地过渡到 gettext。从编程的角度来看,缩写很好,但通常更难维护。

于 2013-02-25T02:49:57.103 回答