这就是我将数据库中的信息放入数组的方式:
$sql = "SELECT city, read FROM location";
$info = mysql_query($sql);
$read = array();
while ($row = mysql_fetch_assoc($info)){
$read[] = $row;
}
这是$read
的输出的一部分(表中有40个城市):
Array ([0] => Array ([city] => New York [read] => false) [1] => Array ([city] => Paris [read] => true ))
现在我想检查城市的读取值是否为真,然后回显一下。
我不知道如何做到这一点我需要一个for循环还是一个if语句?
有人可以帮忙吗?
答案 0 :(得分:4)
function checkCityRead($city){
foreach($read as $r){
if($r['city']==$city){
if($r['read']=='true'){
//do something
}
}
}
}
或者如果想将它作为所有城市的通用循环
foreach($read as $r){
if($r['read']=='true'){
//do something
}
}
修改强>
评论中有很多建议,你不应该使用已弃用的库mysql
,而且你应该查询它是否已被执行"致@Fred-ii"的信用,所以你的代码可能是这样的:
$con = mysqli_connect("localhost","my_user","my_password","my_db");
// Check connection
if (mysqli_connect_errno()){
echo "Failed to connect to MySQL: " . mysqli_connect_error();
} else{
$sql = "SELECT city, `read` FROM location";
$info = mysqli_query($sql, $con);
if(!$info){
echo mysqli_error($con);
} else{
$read = array();
while($row = mysqli_fetch_assoc($info)){
$read[] = $row;
}
}
}
答案 1 :(得分:4)
foreach ($read as $value) {
if ($value['read'] == true)
echo 'something';
}
而且,正如Magnus Eriksson在评论中所述,你应该refrain from using mysql_*
functions 。
编辑(由 Fred -ii - 抓住并建议):read
是一个保留的mySQL关键字,因此如果你没有包含反引号,你的查询应该会失败,如下:
$sql = "SELECT city, `read` FROM location";
附注:您可能希望将$value['read']
与'true'
进行比较,而不是true
(string
而非bool
),因为我很漂亮确保mysql_fetch_assoc()
始终返回string
- 输入值:
foreach ($read as $value) {
if ($value['read'] == 'true')
echo 'something';
}