可以在foreach中应用速记方法吗?

时间:2013-11-19 09:11:42

标签: php foreach shorthand

所以我在google上找到了这个SHORTHAND PHP方法:

if(isset($a))
{
    $a = TRUE;
}
else
{
    $a = FALSE;
}

可以在单行语句中转换为: $a = isset($a) ? TRUE : FALSE;

这是正常工作,我有一个脚本,我无法应用 SHORT HAND 方法。

PHP:

<?php
$letters = ['1' => 'A', '2' => 'B', '3' => 'C'];

$data['LETTER'] = "";

foreach($letters as $id => $letter)
{
    $data['LETTER'] .= "<option value=$id>".$letter."</option>";
}

$html = file_get_contents('test.html');

echo $html = str_replace(array_keys($data),array_values($data),$html);
?>

我最终使用了 SHORTHAND METHOD ,这根本无法使用

$data['LETTER'] = foreach($letters as $id => $letter) ? "<option value=$id>".$letter."</option>" : "";

有没有可能缩短上面的脚本?

2 个答案:

答案 0 :(得分:3)

foreach没有简写方法,但您可以使用array_map来实现它:

$data['LETTER'] = implode(array_map(function($id, $letter){ return "<option value=$id>".$letter."</option>"; }, $letters));

答案 1 :(得分:1)

您可以使用下面的功能

function getOptions($letters){
    $opt = "";
    foreach($letters as $id => $letter){
        $opt .= "<option value=$id>".$letter."</option>";
    }

    return $opt;
}

$letters = array('1' => 'A', '2' => 'B', '3' => 'C');

$data['LETTER'] = getOptions($letters);

以其他方式

foreach($letters as $id => $letter):
    $data['LETTER'] .= "<option value=$id>".$letter."</option>";
endforeach;