PHP铸造不起作用

PHP铸造不起作用,php,Php,嗨,我是一个新手,从24小时以来一直试图解决一个小问题,但仍然没有运气 <?php $MOBILE=7372739; $PASSWORD="some_pass"; $PASSWORD=(string)$PASSWORD; $MOBILE=(string)$MOBILE; //even tried $MOBILE="".$MOBILE; and $MOBILE="$MOBILE"; if(!(isset($PASSWORD)&& !empty($PASSWORD)

嗨,我是一个新手,从24小时以来一直试图解决一个小问题,但仍然没有运气

<?php
$MOBILE=7372739; 
$PASSWORD="some_pass";

$PASSWORD=(string)$PASSWORD;
$MOBILE=(string)$MOBILE;  
//even tried $MOBILE="".$MOBILE; and $MOBILE="$MOBILE";


if(!(isset($PASSWORD)&& !empty($PASSWORD) && strlen($PASSWORD<=50))){
die("break1");
}

if(!(isset($MOBILE)&& !empty($MOBILE) && strlen($MOBILE<=50))){
die("break2");
}

?>

输出: 打破2

如果我使用的是字符串
$MOBILE=“xyz”未被破坏2


为什么总是被打破?请帮忙。谢谢

您正在检查$MOBILE是否小于50,并且它是,因此脚本将终止,<需要是>(在您可能需要的一个场景中),请参见下面的

<?php
$MOBILE=7372739; 
$PASSWORD="some_pass";

$PASSWORD=(string)$PASSWORD;
$MOBILE=(string)$MOBILE;  
//even tried $MOBILE="".$MOBILE; and $MOBILE="$MOBILE";


if(!(isset($PASSWORD)&& !empty($PASSWORD) && strlen($PASSWORD<=50))){
die("break1");
}

if(!(isset($MOBILE)&& !empty($MOBILE) && strlen($MOBILE>=50))){
die("break2");
}

?>

但那不是你的问题,是吗


您还将$MOBILE转换为代码中的字符串,strlen检查字符串长度。如果要检查它的值而不是字符串的长度,请删除
$MOBILE=(string)$MOBILE
并从移动支票中删除strlen,然后您可以将$mobile标志切换回您想要的
break2
还是否?你的问题不清楚,我不想被打断。我正在尝试检查用户手机号码长度是否不大于50(最多50位),以便我可以进一步处理注册我正在检查$mobile是否小于50如果(!(strlen($MOBILENo)。您正在检查手机作为字符串的长度是否小于50。区别在于---$mobile=(string)100或$MOBILE=100。您必须知道整数和字符串之间的差异。由于您正在检查字符串的长度strlen(),因此它将始终返回3,因此它小于50,因此它将随您的die一起消亡(“break2”);是否有方法将数值转换为字符串,如$MOBILE=232转换为$MOBILE=“232”因此,我可以使用strlen检查长度,这样它将返回3您已经在这样做了。那么您在这里尝试实现什么。您的原始代码将打印break2,因为它在逻辑上是这样设置的。只要您希望$MOBILE string小于50个字符,它就会消失(“break2”).很抱歉,我不确定如何提供更清楚的信息。我想你是对的,为你的麻烦感到抱歉。我24小时都没睡,所以我需要休息一下,稍后再试。谢谢