php - mysql数组: if statement in the foreach loop

标签 php mysql multidimensional-array foreach

我在 html 表中显示一个 mysql 查询,我希望在 foreach 循环中放置一个 IF 语句来检查姓氏列的长度。我的目标是检查变量“last_name”是否太长(例如 5 个字符),如果是,则用字符串“NA”更改它。我怎样才能实现我的目标?是否可以?我尝试过在 foreach 循环中使用 if 语句,但它同时更改了“last_name”列和“email”列。

这是我的 PHP 代码:

$sql = 
"SELECT tb1.email, tb2.last_name
FROM user AS tb1
INNER JOIN data AS tb2
ON tb1.id = tb2.id";

$result = $mysqli->query($sql);
$fields_num = mysqli_num_fields($result);

echo "<table border='1'><tr>";
for($i=0; $i<$fields_num; $i++)
{
    $field = mysqli_fetch_field($result);
    echo "<td>{$field->name}</td>";
}
echo "</tr>\n";
while($row = $result->fetch_assoc()) {
echo "<tr>";
foreach($row as $cell)  
    if(strlen($cell)>5){
    echo "<td>NA</td>"; 
    }else{
    echo "<td>$cell</td>";  
    }
    echo "</tr>\n";
    }

最佳答案

我建议根据当前列名称有条件地检查字符串长度。

由于您正在使用 fetch_assoc() ,每个 $row 将是一个带有键(列名)和值的关联数组。

在下面的代码中,如果列名是“last_name”并且值大于 5 个字符,则显示“n/a”。否则,显示值本身。

foreach ($row as $col => $val)  {
    $val = $col == 'last_name' && strlen($val) > 5 ? 'n/a' : $val;
    echo "<td>$val</td>";
}

关于php - mysql数组: if statement in the foreach loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27927725/

相关文章:

java - 2D 数组长度

arrays - 如何在 Go 语言中创建多维键值数组/slice

php - 在 Windows 7 上从源代码编译 PHP, fatal error C1900

php - 可以在 "UUID()"上设置长度吗?

mysql - SQL 数据库连接

mysql - 为什么查询找到工资第二高的员工不在mysql 5.1中工作?

php - 更新/替换换行符不执行

php - mysql_result参数错误

mysql - 如何将数据库集成到软件中

java - 你如何添加到 2D arraylist