PHP-使用for循环对数组中的元素进行计数,而不是使用内置的PHP函数count

PHP-使用for循环对数组中的元素进行计数,而不是使用内置的PHP函数count,php,for-loop,count,Php,For Loop,Count,我正在努力更好地理解for循环,以及如何使用for循环来计算数组中的元素,而不使用内置的PHP函数count 我已经能够使用foreach循环(计算数组中的元素),但是由于某种原因,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"; $te

我正在努力更好地理解for循环,以及如何使用
for循环
来计算数组中的元素,而不使用内置的PHP函数
count

我已经能够使用foreach循环(计算数组中的元素),但是由于某种原因,
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;

foreach ($temp as $value) {
    $count++;
}
print_r($count);
$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);
有人能指出我做错了什么吗?(我以某种无休止的循环结束,没有显示任何内容)

对于循环不工作:

$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);
$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);
$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=爆炸(',',$month_temp);
$count=0;
对于($i=0;$i<$temp;$i++){
$count++;
}
打印(计数);

$i<$temp
不是您想要的条件。我不确定PHP是如何进行比较的,但您正在将整数与数组进行比较。这总是被认为是真的,所以循环会一直持续下去

讽刺的是,你想要
$i
!这将使循环一直运行,直到$i与数组中的元素数相同,此时将有三个表达式($i、$count和count($temp))表示数组中的元素数


因此,这可能不是测试for-loop技能的最佳方法。也许可以尝试运行一组整数来查找特定数字的索引,查找所有数字的总和、最大数、最小数、范围、平均值等:)

现在,您正在使用
中的分解字符串(数组)来进行

$temp = explode(',', $month_temp);
^
|------------------v
for ($i = 0; $i < $temp; $i++) {
// doesn't make sense

您可以使用sizeOf函数代替count,如

$max = sizeof($huge_array);
for($i = 0; $i < $max;$i++)
{
code...
}

除此之外,我认为没有任何可用的方法。

人们说需要使用
count()
来限制循环。但是如果要使用
count()
那么目的是什么?因为您的问题是希望在不使用
count()
的情况下查看计数

您必须将限制提高相当长的时间,并让循环继续,直到阵列中没有更多元素,然后才能中断循环

$count = 0;
for ($i = 0; $i < 1000000; $i++) {
     if(isset($temp[$i]))   
        $count++;
     else
         break;
}
print_r($count);


$temp是一个数组而不是一个数值。因此,您的循环不起作用。为什么要避免使用
count
函数?你需要它作为
循环的第二个参数。我想看看这是否可以在不使用
count
的情况下实现,如果可能的话,就像你可以在每个问题中使用
foreach循环那样。即使不使用explode,比如说我只使用month\u temp作为数组,我仍然会得到一些无止境的循环。当然,我可以使用
count
,但这与目的背道而驰。无论如何,谢谢。@walter是的,你真的需要计数才能有一个条件,但是还有另一种方法,通过数组指针,查看我的DemoHat是否有帮助。但是还有下一个
。那么呢?他们没有说他们不想用next。即使如此,我还是删除了
next()
我不确定OP的要求。为什么不内置函数o@Hanky 웃 Panky我能够根据您的建议使用
isset()
,让循环运行,但我不需要执行
$I<1000000
,我只使用了我最初使用的
$<$temp
,效果很好。你能更新你的答案来反映这一点吗?但我认为,如果我们的数组只有8-10个项目,那么这是浪费1000000次循环。这可以不使用任何内置PHP函数,包括
sizeof
$count = 0;
for ($i = 0; TRUE; $i++) {
     if(isset($temp[$i]))  
        $count++;
     else
         break;
}
print_r($count);