Php 只显示一次多个数据

Php 只显示一次多个数据,php,loops,csv,foreach,Php,Loops,Csv,Foreach,我正在基于导入的.csv文件创建一个表 这工作很好,但我想吐出公司名称一次 因此,这是csv: company,value company1, 231 company1, 432 company1, 876 如果我foreach将数据放入表中,我想显示公司名称一次 echo'<table><tr><td>Companyname</td><td>Value</td>'; foreach ($data as $

我正在基于导入的.csv文件创建一个表

这工作很好,但我想吐出公司名称一次

因此,这是csv

company,value  
company1, 231  
company1, 432  
company1, 876  
如果我
foreach
将数据放入表中,我想显示
公司名称一次

echo'<table><tr><td>Companyname</td><td>Value</td>';
foreach ($data as $gegevens){
    $companyname = $gegevens['Companyname'];
    $value = $gegevens['Value'];
    echo '<tr><td>'.$companyname.'</td><td>'.$value.'</td></tr> ';

}   
echo'</table>';
echo'CompanynameValue';
foreach($gegevens数据){
$companyname=$gegevens['companyname'];
$value=$gegegevens['value'];
回显“.$companyname.$value.”;
}   
回声';
这就是我想要的输出:
[公司名称][价值]
[公司1][231]
[[432]
[][876]


关于如何实现这一点,您有什么想法吗?

您可以使用flag变量这样做

   $flag=True;
    echo'<table><tr><td>Companyname</td><td>Value</td>';
    foreach ($data as $gegevens){
        $companyname = $gegevens['Companyname'];
        $value = $gegevens['Value'];
    if($flag){
    $flag=false;
        echo '<tr><td>'.$companyname.'</td><td>'.$value.'</td></tr> ';
    }else{
        echo '<tr><td> </td><td>'.$value.'</td></tr> ';
    }
    }   
    echo'</table>';
$flag=True;
回显“公司名称值”;
foreach($gegevens数据){
$companyname=$gegevens['companyname'];
$value=$gegegevens['value'];
如果($flag){
$flag=false;
回显“.$companyname.$value.”;
}否则{
回显“.$value.”;
}
}   
回声';
我想它会解决你的问题。


 <?php 
 $data = array(

    array('Companyname' => 'Company', 'Value' => '10'),
    array('Companyname' => 'Company1', 'Value' => '10'),
    array('Companyname' => 'Company1', 'Value' => '10'),
    array('Companyname' => 'Company2', 'Value' => '10'),
 ); 

 $newdata = array();

 foreach ($data as $gegevens){
    $newdata[$gegevens['Companyname']][] = $gegevens['Value']; 
 }

 echo'<table><tr><td>Companyname</td><td>Value</td>';
 foreach($newdata as $company => $values) {
    echo '<tr><td>'.$companyname.'</td><td>'.implode('<br>' ,$values).'</td></tr> ';
}
echo'</table>';
 ?>
$rows=array();
foreach($gegevens数据){
$companyname=$gegevens['companyname'];
$value=$gegegevens['value'];
回显“.$companyname.$value.”;
if(isset($rows[$companyname])){
$rows[$companyname]。='.$value';
}否则{
$rows[$companyname]='.$companyname.'.$value'.';
}
}
回显“公司名称值”;
回波内爆(“,$行);
参见OP对以下内容的评论:


哈哈,差不多。。。。。这一定是我解释不正确的错。有(不正常的)多家公司。那么创建一个if语句还是什么

因此,我建议如下:

$data = array(
    array('Companyname' => 'FBI', 'Value' => '1'),
    array('Companyname' => 'CIA', 'Value' => '2'),
    array('Companyname' => 'CIA', 'Value' => '3'),
    array('Companyname' => 'CIA', 'Value' => '4'),
    array('Companyname' => 'NSA', 'Value' => '5'),
    array('Companyname' => 'NSA', 'Value' => '6'),
);

$last_company = ""; // What was the last company we printed?

echo'<table><tr><td>Companyname</td><td>Value</td>';
foreach ($data as $gegevens){
    $companyname = $gegevens['Companyname'];
    $value = $gegevens['Value'];
    if ($companyname == $last_company) {
        echo '<tr><td></td><td>'.$value.'</td></tr>';
    } else {
        echo '<tr><td>'.$companyname.'</td><td>'.$value.'</td></tr>';
        $last_company = $companyname;
    }
}
echo'</table>';

您能告诉我们所需的输出应该是什么样子吗?@domdom请查看我的更新然后使用您在第一个循环后触发的布尔标志。看见尽管我建议将其命名为比
$flag
更有意义的名称。另外,你很可能想检查一下。另外,这里是使用循环的计数器,而不是
,如果
,这可能不是你想要的,因为你没有计数器,但仍然…和:检查这个可能的重复:我会使用三元来减少它的冗长,但这是风格的问题。然而,以最佳实践的名义,我建议将标志命名为比
标志
更有意义的名称。PS:s/thing/think我明白你的想法,但它不起作用。我只显示else值。这就像第一个循环被忽略了一样!将第一个
$flag
设置为True请再次检查我修改了它。我只是错过了$flag=True;第一次。哈哈,差不多。。。。。这一定是我解释不正确的错。有(不正常的)多家公司。那么创建一个if语句还是什么?@pAsh绝对正确。然而,看到这是一个表格数据,我会假设它是排序的,或者需要再次打印公司名称(否则,你怎么知道该值属于哪家公司?你会认为它属于你打印的最后一家公司)。最坏的情况是,我们总是可以先对数组排序。换句话说:你所描述的是一个特性而不是一个bug。
$data = array(
    array('Companyname' => 'FBI', 'Value' => '1'),
    array('Companyname' => 'CIA', 'Value' => '2'),
    array('Companyname' => 'CIA', 'Value' => '3'),
    array('Companyname' => 'CIA', 'Value' => '4'),
    array('Companyname' => 'NSA', 'Value' => '5'),
    array('Companyname' => 'NSA', 'Value' => '6'),
);

$last_company = ""; // What was the last company we printed?

echo'<table><tr><td>Companyname</td><td>Value</td>';
foreach ($data as $gegevens){
    $companyname = $gegevens['Companyname'];
    $value = $gegevens['Value'];
    if ($companyname == $last_company) {
        echo '<tr><td></td><td>'.$value.'</td></tr>';
    } else {
        echo '<tr><td>'.$companyname.'</td><td>'.$value.'</td></tr>';
        $last_company = $companyname;
    }
}
echo'</table>';
Companyname Value
FBI         1
CIA         2
            3
            4
NSA         5
            6