关于mysqli获取数组的php if语句

时间:2015-01-24 03:01:48

标签: php

我有我的PHP代码: 从sql查询后...

$pieData = array();

} 

while($row = mysqli_fetch_array($result))
{
$pieData[] = array('value' =>(int)$row['cnt'], 'color' => '#222222');

现在,当我通过json_encode()时,这是有效的并且是成功的。我想动态改变颜色。

从我的数据库$ result我访问$row['Delaytype']并希望做类似的事情。

while($row = mysqli_fetch_array($result)){

if($row['Delaytype'] === "engineering"){

$pieData[] = array('value' =>(int)$row['cnt'], 'color' => '#222222');
}elseif($row['Delaytype'] === "something else"){

$pieData[] = array('value' =>(int)$row['cnt'], 'color' => '#888888');

 }

代码可以工作,但它接受第一个真实的语句并继续,我的所有颜色都具有相同的值,我得到的饼图也是如此。我尝试过一个switch语句,if和attemtped循环遍历数组,但我对此的理解是有限的。

非常感谢任何帮助。

该表称为延迟:

It is like 
Delaytype   | Delayhours
engineering |     3
engineering |     2
human error |     4 

SQL查询:

"SELECT Delaytype, SUM('Delayhours') as cnt FROM delays GROUP BY
Delaytype;"

If I echo a table with 

<tr><td>$row[delaytype]</td><td>$row[cnt]</td></tr> //forgive formatting

我将从上表中得到:

engineering 5
human error 4  

strcasecmp也无法正常工作。

如果我这样做(1 = 1)它是有效的,那么它与比较有关但是它是正确的输出是小写工程但是它在测试时没有看到它?

我现在有这个工作。奇怪的是,我做的是将“人为错误”改为“人为错误”,将“工程”改为“工程”。我查看了我的html输入值,发现没有前导空格?不知道为什么它适用于空间。我将搜索我的代码是有原因的。感谢您的帮助和其他建议。 strcasecmp既可以也可以。我将awnser标记为正确,因为你所说的一切都有效...... +它会显示出来并且更有可能被查看类似的问题。谢谢你的帮助

2 个答案:

答案 0 :(得分:1)

循环的一个稍微强大的版本是:

if ($row['Delaytype'] === 'engineering') {
    $color = '#222222';
} elseif ($row['Delaytype'] === 'human error') {
    $color = '#888888';
} else {
    $color = '#ffffff';
}
$pieData[] = array(
    'value' => (int)$row['cnt'],
    'color' => $color,
);

这会检查示例中的每个值,但如果它不匹配,也会有一个回退值。它会将$pieData赋值移到该循环之外,这样您就不会在那里复制代码。

答案 1 :(得分:0)

使用==而不是===来使用您的比较条件,因为后者比较&amp;匹配数据类型,请尝试这种方式,并在此处查看更多信息。 http://php.net/manual/en/language.operators.comparison.php

while($row = mysqli_fetch_array($result))
 {
   if($row['Delaytype'] == "engineering"){
     $pieData[] = array('value' =>(int)$row['cnt'], 'color' => 
      '#222222');
    }elseif($row['Delaytype'] == "human error"){ 
      $pieData[] = array('value' =>(int)$row['cnt'], 'color' => 
      '#888888');  
 }

其他方式:

while($row = mysqli_fetch_array($result))
     {
       if(strcasecmp($row['Delaytype'],"engineering")==0){
         $pieData[] = array('value' =>(int)$row['cnt'], 'color' => 
          '#222222');
        }elseif(strcasecmp($row['Delaytype'],"human error")==0){ 
          $pieData[] = array('value' =>(int)$row['cnt'], 'color' => 
          '#888888');  
     }

注意:此函数返回的字段名称区分大小写。