[英]What am i doing wrong with PHP in_array() function, It is not returning desired values
我在使用 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>';
}
}
紅色突出顯示的文本返回 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>';
}
}
?>
您必須將字符串數組與字符串進行比較,在比較之前或在初始化第二個數組時添加轉換。
這將解決您的問題:
$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>';
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.