PHP - 使用 for 循环来计算数组中的元素,而不是使用内置的 PHP 函数计数
PHP - Using a for loop to count elements in an array instead of using built-in PHP function count
我正在努力更好地理解 for 循环以及如何在没有内置 PHP 函数 count
的情况下使用 for loop
来计算数组中的元素.
我已经能够使用 foreach 循环来完成它,(计算数组中的元素)但是由于某种原因 for loop
不工作?
Foreach 循环有效:
$month_temp = "78, 60, 62, 68, 71, 68, 73, 85, 66, 64, 76, 63, 81, 76, 73, 68, 72, 73, 75, 65, 74, 63, 67, 65, 64, 68, 73, 75, 79, 73";
$temp = explode(',', $month_temp);
$count = 0;
foreach ($temp as $value) {
$count++;
}
print_r($count);
有人可以指出我做错了什么吗? (我最终遇到了某种没有任何显示的无限循环)
For 循环不工作:
$month_temp = "78, 60, 62, 68, 71, 68, 73, 85, 66, 64, 76, 63, 81, 76, 73, 68, 72, 73, 75, 65, 74, 63, 67, 65, 64, 68, 73, 75, 79, 73";
$temp = explode(',', $month_temp);
$count = 0;
for ($i = 0; $i < $temp; $i++) {
$count++;
}
print_r($count);
$i < $temp
不是你想要的条件。我不确定 PHP 是如何进行比较的,但您是在将整数与数组进行比较。这总是评估为真,因此循环将永远持续下去。
讽刺的是,你想要$i < count($temp)
!这将使循环 运行 直到 $i 与数组中的元素数相同,此时你将有三个表达式 ($i, $count 和 count($temp)) 表示数字数组中的元素数。
所以这可能不是测试您的 for 循环技能的最佳方式。也许尝试运行通过整数集合来找到特定数字的索引,找到所有数字的总和,最大数字,最小数字,范围,平均值等等:)
现在,您正在 for
:
中使用展开的字符串(数组)
$temp = explode(',', $month_temp);
^
|------------------v
for ($i = 0; $i < $temp; $i++) {
// doesn't make sense
旁注:如果您的目的是获取分解数组中的元素数量,只需使用 count()
函数即可。那个循环实际上是多余的。
注意:您可以使用 for
来设计一种方式,而无需通过数组指针进行计数:
$month_temp = "78, 60, 62, 68, 71, 68, 73, 85, 66, 64, 76, 63, 81, 76, 73, 68, 72, 73, 75, 65, 74, 63, 67, 65, 64, 68, 73, 75, 79, 73";
$temp = explode(',', $month_temp);
for (current($temp); ($i = current($temp)) !== false; ($i = next($temp))) {
// do something
echo trim($i) , '<br/>';
}
您可以使用 sizeOf 函数来代替计数
$max = sizeof($huge_array);
for($i = 0; $i < $max;$i++)
{
code...
}
如果您不想使用 count 或 sizeof,那么最好使用
foreach($arr as $ar){
//Code here
}
除了这个我不认为有任何可用的方法。
人们说您需要使用 count()
来限制循环。但是如果你要使用 count()
那么目的是什么?因为你的问题说你想在不使用 count()
.
的情况下查看计数
您必须将限制提高相当长的时间,让循环继续进行,直到数组中没有更多元素,然后您才能打破循环
$count = 0;
for ($i = 0; $i < 1000000; $i++) {
if(isset($temp[$i]))
$count++;
else
break;
}
print_r($count);
另一个简化版本
$count = 0;
for ($i = 0; TRUE; $i++) {
if(isset($temp[$i]))
$count++;
else
break;
}
print_r($count);
我正在努力更好地理解 for 循环以及如何在没有内置 PHP 函数 count
的情况下使用 for loop
来计算数组中的元素.
我已经能够使用 foreach 循环来完成它,(计算数组中的元素)但是由于某种原因 for loop
不工作?
Foreach 循环有效:
$month_temp = "78, 60, 62, 68, 71, 68, 73, 85, 66, 64, 76, 63, 81, 76, 73, 68, 72, 73, 75, 65, 74, 63, 67, 65, 64, 68, 73, 75, 79, 73";
$temp = explode(',', $month_temp);
$count = 0;
foreach ($temp as $value) {
$count++;
}
print_r($count);
有人可以指出我做错了什么吗? (我最终遇到了某种没有任何显示的无限循环)
For 循环不工作:
$month_temp = "78, 60, 62, 68, 71, 68, 73, 85, 66, 64, 76, 63, 81, 76, 73, 68, 72, 73, 75, 65, 74, 63, 67, 65, 64, 68, 73, 75, 79, 73";
$temp = explode(',', $month_temp);
$count = 0;
for ($i = 0; $i < $temp; $i++) {
$count++;
}
print_r($count);
$i < $temp
不是你想要的条件。我不确定 PHP 是如何进行比较的,但您是在将整数与数组进行比较。这总是评估为真,因此循环将永远持续下去。
讽刺的是,你想要$i < count($temp)
!这将使循环 运行 直到 $i 与数组中的元素数相同,此时你将有三个表达式 ($i, $count 和 count($temp)) 表示数字数组中的元素数。
所以这可能不是测试您的 for 循环技能的最佳方式。也许尝试运行通过整数集合来找到特定数字的索引,找到所有数字的总和,最大数字,最小数字,范围,平均值等等:)
现在,您正在 for
:
$temp = explode(',', $month_temp);
^
|------------------v
for ($i = 0; $i < $temp; $i++) {
// doesn't make sense
旁注:如果您的目的是获取分解数组中的元素数量,只需使用 count()
函数即可。那个循环实际上是多余的。
注意:您可以使用 for
来设计一种方式,而无需通过数组指针进行计数:
$month_temp = "78, 60, 62, 68, 71, 68, 73, 85, 66, 64, 76, 63, 81, 76, 73, 68, 72, 73, 75, 65, 74, 63, 67, 65, 64, 68, 73, 75, 79, 73";
$temp = explode(',', $month_temp);
for (current($temp); ($i = current($temp)) !== false; ($i = next($temp))) {
// do something
echo trim($i) , '<br/>';
}
您可以使用 sizeOf 函数来代替计数
$max = sizeof($huge_array);
for($i = 0; $i < $max;$i++)
{
code...
}
如果您不想使用 count 或 sizeof,那么最好使用
foreach($arr as $ar){
//Code here
}
除了这个我不认为有任何可用的方法。
人们说您需要使用 count()
来限制循环。但是如果你要使用 count()
那么目的是什么?因为你的问题说你想在不使用 count()
.
您必须将限制提高相当长的时间,让循环继续进行,直到数组中没有更多元素,然后您才能打破循环
$count = 0;
for ($i = 0; $i < 1000000; $i++) {
if(isset($temp[$i]))
$count++;
else
break;
}
print_r($count);
另一个简化版本
$count = 0;
for ($i = 0; TRUE; $i++) {
if(isset($temp[$i]))
$count++;
else
break;
}
print_r($count);