我有问题。我编写的代码需要指出数组的元素,这些元素比数组的下一个元素更大。
您可以在输出图片上看到数组$ arr应该只包含元素70,因为$ar[294]=70 > $ar[295]=69
。但是代码以某种方式将更多元素放到$ arr中,如果语句($ar[$i]>$ar[$i+1])
,则不满足。
这怎么可能?
$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);
输出:
[
答案 0 :(得分:1)
我正在咨询我的导师,他解决了这个问题。
他说有可能php(错误地和未知原因)读取$ ar [$ i]和$ ar [$ i + 1]的内存位置而不是数组的实际值。所以if子句无效。
解: 我没有使用array_push($ ar,$ retcikonacno [$ i] [&#34; vpont&#34;])创建数组$ ar,而是使用了函数intval, 所以它是array_push($ ar,intval($ retcikonacno [$ i] [&#34; vpont&#34;]))。这创建了一组正确的值,如果clase表现良好。