size_of返回错误的答案

时间:2012-02-28 22:34:43

标签: php mysql

我使用php从mysql表中获取一些数据。该表返回正确的结果,但是因为该表有很多列,我认为我可以为此创建一个for循环并将我的所有值保存为val1val2等。我首先使用了一段时间循环,因为可以有几行:

while($row1 = mysql_fetch_array($sql2)){
    for($i = 1; $i < sizeof($row1); $i++) {
        $val.$i = $row1[$i];
    }

但是由于某种原因,sizeof($ row1)返回40而我在该表中只有18列。

我认为$val.$i = $row1[$i];不是声明变量的正确方法吗?

我知道我会犯一个愚蠢的错误,但我无法弄清楚。 :S

3 个答案:

答案 0 :(得分:6)

您需要指定结果类型:

mysql_fetch_array($sql2, MYSQL_NUM);

来自manual

  

通过使用MYSQL_BOTH(默认),您将获得包含两者的数组   关联和数字索引。

答案 1 :(得分:0)

你的$ sql2也可能有一些重复的值, 在您的选择中使用DISTINCT关键字。

答案 2 :(得分:0)

在docs sizeof页面上窃取umopdn [at] msn [dawt] com的评论:

  

a)始终使用PHP的内部例程来迭代对象   各种类型......而不是解释你的代码循环   他们,他们使用自己的内部例程,速度更快。   (这就是foreach()运行速度比手动交互更快的原因)

     

...

     

c)我同意PixEye对sizeof()的评论。在PHP中它只是一个   真实函数count()的别名。它在逻辑上有其他含义   用其他语言而不是对象中的元素数。   这应该避免,因为它可能会混淆开发人员过渡到   来自其他语言的PHP。

你应该使用count()来支持sizeof(),但是由于你可以而且应该使用foreach()而不是for()来否定这一点。