mysql数组:在foreach循环中的if语句

时间:2015-01-13 17:14:30

标签: php mysql multidimensional-array foreach

我在html表中显示一个mysql查询,我希望在foreach循环中放入一个IF STATEMENT来检查lastnames列的长度。我的目标是检查变量" last_name"太长(例如5个字符),如果是这样,用字符串" NA"来改变它。我怎样才能实现目标?可能吗?我已尝试使用foreach循环中的if语句但它更改了" last_name"的列。和#34;电子邮件"。

之一

这是我的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";
    }

3 个答案:

答案 0 :(得分:0)

在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";
    }

希望这有助于你

答案 1 :(得分:0)

你可以在循环中试试这个:

if (strlen($your_last_name_var) > 5)
{
    echo 'ok';
}

答案 2 :(得分:0)

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

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

在下面的代码中,如果列名是&#34; last_name&#34; 该值大于5个字符,显示&#34; n / a&#34;。否则,显示值本身。

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