PHP显示数组元素名称

时间:2014-11-05 16:07:39

标签: php

我将$ data [" results"]数组从我的控制器传递到我的视图,我想回显那些等于1的数组元素的NAME。

例如,如果{$ first == 1,$ second == 0,$ third == 0}我想显示"首先"。

请您检查下面的代码并帮我找出错误。

    foreach($results as $row){                  
                                $first= $row->first;
                                $second= $row->second;
                                $third= $row->third;

            if ($first == 1) {$digits['first'] = $first;}  
            if ($second == 1) {$digits['second'] = $second;} 
            if ($third == 1) {$digits['third'] = $third;} 

print_r($digits);  //  Displays 'Array ( [first] => 1 )' instead of 'first'
    }

更新:

我通过循环生成html表并使用TCPDF显示它们。

以下更新的代码通常会显示' first'如果第一个表是{$ first == 1,$ second == 0,$ third == 0}。

对于第二个表,如果{$ first == 0,$ second == 0,$ third == 1},它应该显示第三个'但它显示了第一个,第三个'因为它将新值添加到前一个而不是替换它。

$digits = array();

foreach($results as $row){
    $first= $row->first;
    $second= $row->second;
    $third= $row->third;

    if ($first == 1) { $digits[] = 'first'; }
    if ($second == 1) { $digits[] = 'second'; }
    if ($third == 1) { $digits[] =  'third'; }

$abc = implode(', ', $digits);

$tbl.=<<<EOD
<table>
 <tr>
  <td>
    $abc
  </td>    
 </tr>
</table>
<br><br>
EOD;

}

4 个答案:

答案 0 :(得分:1)

以下代码将循环遍历数组并添加&#39; first&#39;,&#39; second&#39;或者&#39;第三个&#39;到$ digits数组。

这是你想要实现的目标吗?

foreach($results as $row){
    $digits = array();
    $first= $row->first;
    $second= $row->second;
    $third= $row->third;

    if ($first == 1) { $digits[] = 'first'; }
    if ($second == 1) { $digits[] = 'second'; }
    if ($third == 1) { $digits[] =  'third'; }
    print_r($digits);
    // echo implode(', ', $digits);
}

答案 1 :(得分:0)

尝试查看$ digits中的内容..

echo var_dump($digits);

答案 2 :(得分:0)

试试这段代码。

$digits = array();

foreach ($results as $row) {

 if ($row->first == 1) {
    $digits['first'] = 'first';
 }
 if ($row->second == 1) {
    $digits['second'] = 'second';
 }
 if ($row->third == 1) {
    $digits['third'] = 'third';
 }
}

print $digits['first'];

答案 3 :(得分:0)

为什么要使用数组$ digits?

不是吗?

$digits = '';

foreach($results as $row){
    $first= $row->first;
    $second= $row->second;
    $third= $row->third;

    if ($first == 1) { $digits = 'first'; break; }
    if ($second == 1) { $digits = 'second'; break; }
    if ($third == 1) { $digits =  'third'; break; }
}

echo $digits;