2012-12-14 56 views
1

学习PHP和我有一个问题。PHP数组元素比较

如何从数组中获取元素并确定它是否等于静态值?我有一个查询语句返回集(确认数组有所有值)。

我想:

<? if($row["rowValue"] == 1) { 
    } 
?> 

我期待值是1,但它返回空值(好像我做错了)。

+1

,你得到了什么? – csi

+0

看到“$ row”让我觉得你是从结果集中拉出来的......你能在代码中得到结果集吗?你使用mysqli吗?只要“$ row ['rowValue']”有一个值,那么你应该有什么工作。 – Ben

+0

列名是否为'rowValue'? –

回答

0

你几乎没有;这样的事情应该确认它为您:

echo "<p>Q: Does ".$row["rowValue"]." = 1?</p>"; 
if($row["rowValue"] == 1) { 
    echo "<p>A: Yes ".$row["rowValue"]." does equal 1</p>"; 
} else { 
    echo "<p>A: No, '".$row["rowValue"]."' does not equal 1</p>"; 
} 

如果仍然返回“不”,你可以尝试做阵列的变种转储,像这样观看整个$row数组:

var_dump($row); 

这将给你详细的数组输出结果,你应该能够看到你是否正在调用数组中的正确元素。

+0

行上的转储为[“hasReport”] =>字符串(1)“0”。这很奇怪,因为db中的d类型是一个整数。 – user82302124

+0

如果您将其从数据库中提取出来,您的数组将自动假定该值是一个字符串,而不是int。如果你正在使用'if($ row [“rowValue”] == 1)'comparison(如果你比较像这样:if($ row [“rowValue”] === 1 )'[这里有一点点](http://stackoverflow.com/questions/80646/how-do-the-equality-double-equals-and-identity-triple-equals-comparis)),你会看看你是否将我的代码更改为== 0,它会在你的情况下返回true。 – Stu

+0

所以我做了一个print_r的变量。它在0时打印0,当它为1时不打印。我不明白为什么。所以我将比较改为== 0,它在0时有效。任何想法为什么会这样?这是一个TINYINT,最大长度为4. – user82302124

0

什么是返回null

试试这个:

if($row["rowValue"] === 1) { ... } 

确保有在$row称为rowValue的元素。

0

也许尝试:

<? if($row[0]["theNameOfAColumn"] == 1) { 
    } 
?> 

通常的数据库,如行返回行[0],行[1],行[2]等