2015-11-23 82 views
-1

此代碼可以幫助我找到的最小一定數額的,所以我設置的函數,如下面的一個:未定義抵消錯誤循環

function GetMin($s) 
    { 

     for($j=1;$j<=count($s)-1;$j++) 
     { 
      $min=$s[1]; 
      if($s[$j] < $s[$j+1] && $s[$j] < $min) 
      { 
       $min=$s[$j]; 
      } 
    else {continue;}   
     } 
     echo $min; 
    } 

$enc=".129.25.24.154.546.214.142.254.256"; 
$ar=explode(".",$enc); 
for($i=0;$i<count($ar)-1;$i+=3) 
{ 
    $s[$i+1]=$ar[$i+1]+$ar[$i+2]+$ar[$i+3]; 
    echo $s[$i+1]."<br>"; 
} 


GetMin($s) 

的代碼應該以這種方式工作:

計算的並將其存儲在另一個名爲「s」的數組中,代碼運行良好,直到我試圖找到最小值,它將打印出最小值,但出現以下錯誤:

注意:未定義的偏移量:2位於C:\ Prog ram文件(x86)\ Apache Software Foundation \ Apache2.2 \ htdocs \ decrypt.php第9行注意:未定義偏移量:2在C:\ Program Files文件(x86)\ Apache Software Foundation \ Apache2.2 \ htdocs \ decrypt中。第9行的PHP注意:未定義的偏移量:3在C:\ Program Files文件(x86)\ Apache軟件基金會\ Apache2.2 \ htdocs \ decrypt.php上線9 178

+0

爲什麼不使用'foreach'並讓它處理索引? –

+0

我懷疑你的邏輯,請一次回來,如果需要回來.. –

+0

@ iam解碼器:我不能使用'foreach',因爲我應該比較$ min,並且下一期的陣列。 @NiranjanNRaju:我不明白「邏輯」有什麼問題,你能解釋一下你的意思。 – YAK

回答

1

看起來像你試圖爲了獲得值的數組中的最小值,所以我已將GetMin()函數更改爲在調用GetMin()之前創建的非連續索引數組。這應該適合你:

<?php 
function GetMin($s){ 
    $min = NULL; 
    foreach($s as $v){ 
     if(is_null($min)){ 
      $min = $v; 
     } elseif($v < $min){ 
      $min = $v; 
     } 
    } 
    return $min; 
} 
$enc = ".129.25.24.154.546.214.142.254.256"; 
$ar = explode(".",$enc); 
$ar_count = count($ar); 
for($i=0;$i<$ar_count-1;$i+=3) 
{ 
    $s[$i+1]=$ar[$i+1]+$ar[$i+2]+$ar[$i+3]; 
    echo $s[$i+1]."<br>"; 
} 


echo GetMin($s);