枚举值为字符串PHP

时间:2016-05-19 17:13:01

标签: php enums

我正在开发一个连接到RESTful Web服务的PHP应用程序,该服务本身连接到数据库。在我的RESTful中,我有一个Enum,它将Enum的值保存为数据库中的整数。但是当我必须在PHP层中制作GET Api时,无论如何我都可以以某种方式进行转换,我不知道这是否是正确的单词,将int值转换为字符串以便代替显示2它显示“单“例如。

这是我在Webservice中的Enum。

public enum BookingType { Single, Group, Tournament }

这就是php部分。

<?php
$uri2 = "http://examdatabasebooking.cloudapp.net/BookingService.svc/getbookings/";
if (isset($_POST["DateAndTimeFrom"])) {
        $FDateAndTimeFrom = $_POST["DateAndTimeFrom"];

$jsondata = file_get_contents($uri2 . $FirstName);
$booking = json_decode($jsondata, TRUE);

注意:在foreach中我只尝试将提取类型作为值提取,然后将值设置为包含Enum值的数组,因此每次我获取预订时,取决于它将写出的枚举值,团体或比赛..但它不起作用..

foreach ($booking as $value) {
  $jsondata = $value["BookingType"];
  $value = array("Single" => 0, "Group" => 1, "Tournament" => 2);
}
if(empty($booking)) {
 echo "No bookings!";
else {    
echo $booking["DateAndTimeFrom"] . " " . $booking["DateAndTimeTo"] . " " .     $booking["BookingType"];     
}

}
?>

这就是打印出的内容: DateAndTimeFrom:2016年10月5日下午1:00 DateAndTimeTo:2016年10月5日下午2:00 BookingType:2&lt; =这应该打印出锦标赛而不是2

1 个答案:

答案 0 :(得分:1)

您可以为您的值声明一个数组。

$bookingTypes = array(
    'Single',
    'Group',
    'Tournament'
);

使用$booking['bookingType']

获取字符串
echo $bookingTypes[$booking['bookingType']]; // Tournament

如果您有自定义值而不是0, 1 and 2

$bookingTypes = array(
    9 => 'Single',
    20 => 'Group',
    54 => 'Tournament'
);