我使用php开关实现了此功能,以便将二进制代码集转换为字母/数字。 当我在包含二进制代码的变量上回调函数时,它总是返回第一种情况。 有想法吗?
<?php
if (!function_exists('baudot')){
function baudot(){
switch(true) {
case '111000' : $decid= 'A'; break;
case '110011' : $decid= 'B'; break;
case '101110' : $decid= 'C'; break;
case '110010' : $decid= 'D'; break;
case '110000' : $decid= 'E'; break;
case '110110' : $decid= 'F'; break;
case '101011' : $decid= 'G'; break;
case '100101' : $decid= 'H'; break;
case '101100' : $decid= 'I'; break;
case '111010' : $decid= 'J'; break;
case '111110' : $decid= 'K'; break;
case '101001' : $decid= 'L'; break;
case '100111' : $decid= 'M'; break;
case '100110' : $decid= 'N'; break;
case '100011' : $decid= 'O'; break;
case '101101' : $decid= 'P'; break;
case '111101' : $decid= 'Q'; break;
case '101010' : $decid= 'R'; break;
case '110100' : $decid= 'S'; break;
case '100001' : $decid= 'T'; break;
case '111100' : $decid= 'U'; break;
case '101111' : $decid= 'V'; break;
case '111001' : $decid= 'W'; break;
case '110111' : $decid= 'X'; break;
case '110101' : $decid= 'Y'; break;
case '110001' : $decid= 'Z'; break;
case '100100' : $decid= ' '; break;
case '011000' : $decid= '-'; break;
case '010111' : $decid= '/'; break;
case '001101' : $decid= '0'; break;
case '011101' : $decid= '1'; break;
case '011001' : $decid= '2'; break;
case '010000' : $decid= '3'; break;
case '001010' : $decid= '4'; break;
case '000001' : $decid= '5'; break;
case '010101' : $decid= '6'; break;
case '011100' : $decid= '7'; break;
case '001100' : $decid= '8'; break;
case '000011' : $decid= '9'; break;
default: $decid='NIL';
}
return $decid;
}
}
$serid1='000011';
$serid2='110100';
echo baudot($serid1).'<br/>'; // should give 9
echo baudot($serid2); // should give S
?>
答案 0 :(得分:3)
这是因为您正在将每个值与布尔值true
进行比较。第一个值是字符串111000
。由于任何非空字符串都被认为是true
,因此当PHP类型变戏法(因为您正在比较两种不同的数据类型)时,您的字符串就等于true。
您想要执行的操作是将其与一个值而不是布尔值true
进行比较。因此,您需要在switch
语句中使用它。这是通过将值作为参数传递给函数,然后在switch
语句中使用它来实现的:
function baudot($value){
switch($value) {
答案 1 :(得分:2)
使用开关盒时您错了。检查更新的代码。
您需要将id参数传递给函数,然后在切换时使用该参数。
<?php
function baudot(string $id){
switch($id) {
case '111000' : $decid= 'A'; break;
case '110011' : $decid= 'B'; break;
case '101110' : $decid= 'C'; break;
case '110010' : $decid= 'D'; break;
case '110000' : $decid= 'E'; break;
case '110110' : $decid= 'F'; break;
case '101011' : $decid= 'G'; break;
default: $decid='NIL';
}
return $decid;
}
echo baudot('111000'); // Prints A