2016-04-12 214 views
0

我遇到問題。我寫了代碼,需要指出數組的下一個元素更大的元素。 您可以在輸出圖片上看到數組$ arr應該只包含元素70,因爲$ar[294]=70 > $ar[295]=69。但代碼以某種方式將更多元素放到$ arr中,這些元素不會滿足語句($ar[$i]>$ar[$i+1])if子句不能正常工作

這怎麼可能?

$ar = array(); 
for ($i=0; $i < sizeof($retcikonacno); $i++) { 
    if ($retcikonacno[$i]["n2"] >= 1001 && $retcikonacno[$i]["n2"] <= 1013) { 
     array_push($ar, $retcikonacno[$i]["vpont"]); 
    } 
} 

echo "ar="; 
echo "</br>"; 
print_r($ar); 

echo "</br>"; 
echo "-------------------"; 
echo "</br>"; 
echo "-------------------"; 

echo "</br>" . "</br>"; 

$arr = array(); 

$size = sizeof($ar)-1; 
for ($i=0; $i < $size; $i++) { 
    if ($ar[$i] > $ar[$i+1]) { 
     array_push($arr, $ar[$i]); 
    } 
} 

echo "arr="; 
echo "</br>"; 
print_r($arr); 

OUTPUT:

[Output

+1

請將您的代碼發佈到此處,以便將來的SO訪問者保存它。 –

+0

我做過了,如果您需要任何其他信息,請告訴我。 –

+0

你的問題和你的代碼不匹配。根據你的代碼,你將有13個項目。 –

回答

1

我與我的導師諮詢,他解決了這個問題。

他說,有可能php(錯誤和未知原因)讀取$ ar [$ i]和$ ar [$ i + 1]的內存位置,而不是數組的實際值。所以如果子句無效。

SOLUTION: 創建數組$ AR爲我array_push做了相反的($ AR,$ retcikonacno [$ i] [ 「vpont」]),他使用的功能INTVAL, 所以這是array_push($ AR,INTVAL ($ retcikonacno [$ i]於[ 「vpont」]))。這創建了一系列正確的值,如果clase做得很好。