如何在php中分别获取相同列值的行?

时间:2017-06-09 18:47:18

标签: php mysql

我想分隔所有受影响的行,这些行的列值与“x”相同,列值为“y”等等。

例如:表的列名为“Month”。我想显示所有受影响的行'1月',这些行是'2月',我希望分别按月份名称显示行。

Sample Input:

title  month
 a      Jan
 b      Feb
 c      Feb
 d      Jan 
 e      Mar
 f      Jan
 g      Feb
 h      Jan
 i      Mar

Expected Output:

Jan:
    a 
    d
    f
    h
Feb:
   b
   c
   g
Mar:
   e
   i

我找不到任何解决这个问题的想法。有人可以帮帮我吗?

4 个答案:

答案 0 :(得分:0)

没有代码,这是我对你所追求的最好的解释。

你有一些数组,你想在一个元素值上拆分数组。

<?php

$array[0]['Month'] = 'January';
$array[0]['Activity'] = 'Sledding';
$array[1]['Month'] = 'January';
$array[1]['Activity'] = 'New years party';
$array[2]['Month'] = 'February';
$array[2]['Activity'] = 'Find a SO';
$array[3]['Month'] = 'February';
$array[3]['Activity'] = 'Celebrate Valentines';

$january = array_filter($array, function($item){
    return $item['Month'] === 'January';
});

$february = array_filter($array, function($item){
    return $item['Month'] === 'February';
});

echo "Jan:";
var_dump($january);

echo "\n\nFeb:";
var_dump($february);

<强>收率:

Jan:array(2) {
  [0]=>
  array(2) {
    ["Month"]=>
    string(7) "January"
    ["Activity"]=>
    string(8) "Sledding"
  }
  [1]=>
  array(2) {
    ["Month"]=>
    string(7) "January"
    ["Activity"]=>
    string(15) "New years party"
  }
}


Feb:array(2) {
  [2]=>
  array(2) {
    ["Month"]=>
    string(8) "February"
    ["Activity"]=>
    string(9) "Find a SO"
  }
  [3]=>
  array(2) {
    ["Month"]=>
    string(8) "February"
    ["Activity"]=>
    string(20) "Celebrate Valentines"
  }
}

http://sandbox.onlinephpfunctions.com/code/a86fb26f3a619dff8fd7649f992ba9d6af38b9b5

答案 1 :(得分:0)

下面:

select 
month, title
from
<table>
order by month;

这将为您提供月份的标题。

Month    Title
Jan      a
Jan      d
Jan      f
Jan      h
Feb      b
Feb      c
Feb      g
Mar      e
Mar      i

答案 2 :(得分:0)

  SELECT * FROM table_name GROUP BY Month 
然而,

将是一个有效的qwery。如果您想要添加类似于您的示例的内容,则可以先在月份列中列出不同的项目,并且当它首先循环显示列表的第一个结果时,显示第一个结果的行。

这可以像:

   <?php
         @ $db = new mysqli('localhost', 'user', 'password', 'database');
  $query = "SELECT DISTINCT Month from Table1";
  $result = $db->query($query); 

  while ($data = $result->fetch_row()) {
   echo '<table align="left"><tr>';
  for ($j=0; $j<$result->field_count; $j++) {
    echo '<th>'.$data[$j].': </th><tr><td>';
       $rowquery = "SELECT title from Table1 where Month='".$data[$j]."'";
        $rowresult = $db->query($rowquery); 
       echo '<table >';  
         while ($rowdata = $rowresult->fetch_row()) {
          echo '<tr align="right">';
                for ($k=0; $k<$rowresult->field_count; $k++) {
                echo '<td>'.$rowdata[$k].'</td>';
         }
         echo '</tr>';
         }
         echo '</table>';    

        }
         echo '</td></tr></table>';
        }

    ?>

答案 3 :(得分:0)

这是我能在不看你的代码的情况下做的事情

$array = array( 
 'a' =>      'Jan',
 'b'   =>   'Feb',
 'c'   =>   'Feb',
 'd'   =>   'Jan', 
 'e'   =>   'Mar',
 'f '   =>  'Jan',
 'g'    =>  'Feb',
 'h'    =>  'Jan',
 'i'   =>   'Mar'
              );
$result=array();              
foreach( $array as $key => $value ){
    if(array_key_exists($value,$result)){
        $result[$value] .= ','.$key;
    } else {
        $result[$value] = $key;
    }
}

这是输出

Array
(
    [Jan] => a,d,f ,h
    [Feb] => b,c,g
    [Mar] => e,i
)