Php开关只返回第一种情况
我使用php开关实现了这个函数,以便将二进制代码集转换为字母/数字。 当我对包含二进制代码的变量回调函数时,它总是返回第一种情况。 有什么想法吗Php开关只返回第一种情况,php,function,switch-statement,Php,Function,Switch Statement,我使用php开关实现了这个函数,以便将二进制代码集转换为字母/数字。 当我对包含二进制代码的变量回调函数时,它总是返回第一种情况。 有什么想法吗 <?php if (!function_exists('baudot')){ function baudot(){ switch(true) { case '111000' : $decid= 'A'; break; case '110011' : $decid= 'B'; break
<?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
?>
您使用开关盒是错误的。检查更新的代码 您需要将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
这是因为您正在将每个值与布尔值true
进行比较。第一个值是字符串111000
。因为任何非空字符串都被认为是true
,所以当PHP类型改变(因为您比较的是两种不同的数据类型)时,您的字符串是true,它等于true
看起来您要做的是将其与值进行比较,而不是布尔值true
。因此,您需要在switch
语句中使用它。这是通过将值作为参数传递给函数,然后在switch
语句中使用它来实现的:
function baudot($value){
switch($value) {
您实际上没有解释为什么总是返回第一个结果。没有它,你就无法解释到底是怎么回事。你只需要给他们工作代码。我认为这有点“不言自明”,从我所说的,我认为他会足够聪明,理解我的代码和他的代码之间的区别,理解他需要函数中的参数,然后在开关盒中使用它。你的答案只是太多的信息,在这个简单的案例中,什么是真正不需要的。:)但这并不是不言自明的。类型杂耍并不明显,这是PHP中常见的陷阱,因此我们有这个问题。回答得好,John。解释得很好,伊姆霍。谢谢约翰的解释!这是有道理的。