mysql数组:foreach循环中的if语句
mysql array: if statement in the foreach loop
我在 html table 中显示一个 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";
}
使用php中的strlen()
函数计算字符数。使用下面的代码
$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()) {
$last_name=$row['last_name'];
if(strlen($last_name)>5){
$last_name="NA";
}
echo "<tr>";
foreach($row as $cell)
echo "<td>$cell</td>";
echo "</tr>\n";
}
希望对您有所帮助
您可以在循环中尝试这个:
if (strlen($your_last_name_var) > 5)
{
echo 'ok';
}
我建议根据当前列名有条件地检查字符串长度。
由于您使用的是 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>";
}
我在 html table 中显示一个 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";
}
使用php中的strlen()
函数计算字符数。使用下面的代码
$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()) {
$last_name=$row['last_name'];
if(strlen($last_name)>5){
$last_name="NA";
}
echo "<tr>";
foreach($row as $cell)
echo "<td>$cell</td>";
echo "</tr>\n";
}
希望对您有所帮助
您可以在循环中尝试这个:
if (strlen($your_last_name_var) > 5)
{
echo 'ok';
}
我建议根据当前列名有条件地检查字符串长度。
由于您使用的是 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>";
}