0

次のクライアント データの配列があります。

Array
(
    [0] => Array
        (
            [client_id] => 3680
            [firstname] => Brian
            [surname] => May
            [company] => 
        )

    [1] => Array
        (
            [client_id] => 3688
            [firstname] => Freddie
            [surname] => Mercury
            [company] => 
        )

    [2] => Array
        (
            [client_id] => 3694
            [firstname] => Roger
            [surname] => Taylor
            [company] => 
        )
)

これをテーブルに表示したいのですが、すべての場合(この例では「会社」など)で要素がnullの場合、その列をテーブルに表示したくありません。

最初に配列全体をループせずにこれを行う方法を誰かが提案できますか?

4

4 に答える 4

1

この場合、ループを避けることはできないため、あなたのケースについて考えることができる最善のアプローチは次のとおりです。

<?php

$test = array
            (
        array
        (
            client_id => 3680,
            firstname => 'Brian',
            surname => 'May',
            company => null
        ),

        array
        (
            client_id => 3688,
            firstname => 'FreddieFreddie',
            surname => 'Mercury',
            company => null
        ),

        array
        (
            client_id => 3694,
            firstname => 'Roger',
            surname => 'Taylor',
            company => null
        )
);

$empty_columns = false;
foreach ($test as $item) {
    $keys = array_keys($item, null, true);

    if (count($keys) == 0)
    {
        $empty_columns = null;
        break;
    }

    if ($empty_columns===false)
        $empty_columns = $keys;

    $empty_columns= array_intersect($empty_columns, $keys); 
}
print_r($empty_columns);        
?>

$empty_columns は、すべての値が NULL である列を含む 1 つの配列を返します。この例では:

Array
(
    [0] => company
)

列を印刷する前に、この配列を確認してください。

于 2012-10-16T11:18:16.863 に答える
0

使用できます

$array = array(
        array('client_id' => 3680,'firstname' => 'Brian','surname' => 'May','company' => NULL),
        array('client_id' => 3688,'firstname' => 'Freddie','surname' => 'Mercury','company' => ''),
        array('client_id' => 3694,'firstname' => 'Roger','surname' => 'Taylor','company' => 'Hello World'));

print("<table>");
foreach ( $array as $list ) {
    print("<tr>");
    $col = array();
    foreach ( $list as $value ) {
        empty($value) or $col[] = $value;
    }

    if (count($col) != count($list)) {
        $ele = array_pop($col);
        foreach ( $col as $td ) {
            printf("<td>%s</td>", $td);
        }
        printf("<td colspan=\"2\">%s</td>", $ele);
    } else {
        foreach ( $col as $td ) {
            printf("<td>%s</td>", $td);
        }
    }
    print("</tr>");
}
print("</table>");

出力

<table>
   <tr>
      <td>3680</td>
      <td>Brian</td>
      <td colspan="2">May</td>
   </tr>
   <tr>
      <td>3688</td>
      <td>Freddie</td>
      <td colspan="2">Mercury</td>
   </tr>
   <tr>
      <td>3694</td>
      <td>Roger</td>
      <td>Taylor</td>
      <td>Hello World</td>
   </tr>
</table>
于 2012-10-16T10:52:16.613 に答える
-1

$array >> あなたの配列

foreach($array as $arr){

    if( !empty($arr['client_id']) &&  !empty($arr['firstname']) && !empty($arr['surname']) &   !empty($arr['company']) ){

        //show that column

    }else{

        //Don't show

    }

}
于 2012-10-16T10:40:56.300 に答える
-1

すべてのヌルをチェックするコード

$company=1;
foreach($yoyrary as $ary)
{
  if($ary[company]==null)
  {
   $company++
  }
}

表示テーブルのコードを作成する

    <table>
    <th>client_id</th>
<th>firstname</th>
<th>surname</th>
<?php if($company!=count($yourary)){?><th>company</th><?php }?>
    foreach($yoyrary as $ary)
    {
     <td>client_id data</td>
<td>firstname data</td>
<td>surname data</td>
<?php if($company!=count($yourary)){?><td>company data</td><?php }?>
    }?>
    </table>
于 2012-10-16T10:42:36.600 に答える