我使用php从mysql表中获取一些数据。该表返回正确的结果,但是因为该表有很多列,我认为我可以为此创建一个for循环并将我的所有值保存为val1
,val2
等。我首先使用了一段时间循环,因为可以有几行:
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
答案 0 :(得分:6)
答案 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()来否定这一点。