PHP in_array()函数出错,它没有返回所需的值

PHP in_array()函数出错,它没有返回所需的值,php,Php,我对PHP in_array()方法有一个问题,它非常简单,但不能正常工作。我从互联网上尝试了许多解决方案。但一切似乎都很好。你能帮我找出语法或逻辑上的错误吗 这是我的密码 $array1 = array('1','0.2','1.3','0.6','1.4','1.6','12','1.2','11.2'); $array2 = []; for($i=0.1; $i<=15;){ $array2[] = $i; $i+= 0.1; } foreach($array2 a

我对PHP in_array()方法有一个问题,它非常简单,但不能正常工作。我从互联网上尝试了许多解决方案。但一切似乎都很好。你能帮我找出语法或逻辑上的错误吗

这是我的密码

$array1 = array('1','0.2','1.3','0.6','1.4','1.6','12','1.2','11.2');
$array2 = [];
for($i=0.1; $i<=15;){
    $array2[] = $i;
    $i+= 0.1;
}

foreach($array2 as $key=>$value){
    // print_r($array1);
    if(in_array($value, $array1)){
        echo $value. ' OK <br>';
    }else{
        echo $value. '<br>';
    }
    
}
$array1=数组('1','0.2','1.3','0.6','1.4','1.6','12','1.2','11.2');
$array2=[];
对于($i=0.1;$i$value){
//印刷品(1美元);
if(在数组中($value,$array1)){
回显$value.“OK
”; }否则{ 回显$value。“
”; } }
这是我的输出图像


红色突出显示的文本返回true,绿色不返回

您需要使用数字或字符串,但不要将数字与字符串进行比较,希望它们相同。一个简单的解决方法是在比较测试中使用
strval
将生成的数字转换为字符串

<?php

    $array1 = array('1','0.2','1.3','0.6','1.4','1.6','12','1.2','11.2');

    $array2 = [];
    for($i=0.1; $i<=15; $i+= 0.1 )$array2[] = $i;


    foreach($array2 as $key=>$value){

        if( in_array( strval($value),  $array1 )){
            echo $value. ' OK <br>';
        }else{
            echo $value. '<br>';
        }
        
    }

?>

您需要使用数字或字符串,但不要将数字与字符串进行比较,希望它们是相同的。一个简单的解决方法是在比较测试中使用
strval
将生成的数字转换为字符串

<?php

    $array1 = array('1','0.2','1.3','0.6','1.4','1.6','12','1.2','11.2');

    $array2 = [];
    for($i=0.1; $i<=15; $i+= 0.1 )$array2[] = $i;


    foreach($array2 as $key=>$value){

        if( in_array( strval($value),  $array1 )){
            echo $value. ' OK <br>';
        }else{
            echo $value. '<br>';
        }
        
    }

?>

您必须将字符串数组与字符串进行比较,在比较之前或在初始化第二个数组时添加转换

这将解决您的问题:

$array1 = array('1','0.2','1.3','0.6','1.4','1.6','12','1.2','11.2');
$array2 = [];
$i = 0.1;
while( $i <= 15 ) :
    $array2[] = strval( $i );
    $i = $i + 0.1;
endwhile;

foreach($array2 as $value){
    // print_r($array1);
    if(in_array($value, $array1)){
        echo $value. ' OK <br>';
    }else{
        echo $value. '<br>';
    }
    
}
$array1=数组('1','0.2','1.3','0.6','1.4','1.6','12','1.2','11.2');
$array2=[];
$i=0.1;

当($i您必须将字符串数组与字符串进行比较时,请在比较之前或在初始化第二个数组时添加转换

这将解决您的问题:

$array1 = array('1','0.2','1.3','0.6','1.4','1.6','12','1.2','11.2');
$array2 = [];
$i = 0.1;
while( $i <= 15 ) :
    $array2[] = strval( $i );
    $i = $i + 0.1;
endwhile;

foreach($array2 as $value){
    // print_r($array1);
    if(in_array($value, $array1)){
        echo $value. ' OK <br>';
    }else{
        echo $value. '<br>';
    }
    
}
$array1=数组('1','0.2','1.3','0.6','1.4','1.6','12','1.2','11.2');
$array2=[];
$i=0.1;

虽然($i您试过调试这个问题吗?为什么要将数字与字符串进行比较?是的,我试过了,但没有返回任何错误。实际上,我用$array1@NICOHAASE中的一个数字浮点值进行了调试。您试过什么?您到底期望什么?调试不仅仅是查找错误消息,而是查找代码中的逻辑问题不要责怪PHP(标题)当它是你的错时。你试过调试这个问题吗?为什么你要将数字与字符串进行比较?是的,我试过了,但没有返回任何错误。实际上我用$array1@NICOHAASE中的数字浮点值进行了尝试。你试过什么?你到底期望什么?调试不仅仅是查找错误消息,而是查找逻辑错误代码中的问题不要因为是你的错而责怪PHP(标题)。请始终解释你的答案。谢谢,strval()解决了我的问题。非常感谢。请始终解释你的答案。谢谢,strval()解决了我的问题。非常感谢。谢谢,先生,strval()解决了我的问题。谢谢,先生,strval()解决了我的问题。