用文字替换数字

时间:2016-06-08 09:48:03

标签: php moodle

我在table中获取了用户Moodle的数据:

            $data[] = $view-look;
            $data[] = $view->tyres;
            $data[] = $view->insidelook;
            $data[] = $review->motor;

数据适用于每列中的status。从bad (1)good(2)very good (3)superb(4)的状态相同。

现在只显示数字。如何为每列显示错误良好等数字而不是数字?

4 个答案:

答案 0 :(得分:3)

最简单的方式

    $data = [1,1,1,2,4,2,3,3,1,3,3,2];

    $mapping = [1 => 'bad', 2 => 'good', 3 => 'very good', 4 => 'superb'];

    foreach ($data as $key => $value) {
        $data[$key] = $mapping[$value]; 
    }

您将获得与文本内容相同的数组$ data而不是数字。

答案 1 :(得分:0)

您可以使用switch语句或if语句。它真的取决于你。我不知道您为状态使用了哪些变量,所以我假设$status

switch($status) {
   case 1:
       $status_text = "bad"
       break;
   case 2:
       $status_text = "good"
       break;
   case 3:
       $status_text = "very good"
       break;
   case 4:
       $status_text = "superb"
       break;
   // Have a default value just in case.
   default:
       $status_text = "not set"
       break;
}

// Add it to the data array.
$data[] = $status_text;

答案 2 :(得分:0)

这是一个简短的解决方案,创建一个关联数组(符号表),并获取与每个数字对应的文本

$statuses = array(
    "1" => "bad",
    "2" => "good",
    "3" => "very good",
    "4" => "superb"
);

$data[] = $statuses[$status];

答案 3 :(得分:0)

您也可以使用简写ternary operator进行此操作。

$status_text = $status == 1 ? "bad" : ($status == 2 ? "good":($status == 3 ? "very good" :($status == 4 ? "superb" :"not set")));