我想分隔所有受影响的行,这些行的列值与“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
我找不到任何解决这个问题的想法。有人可以帮帮我吗?
答案 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
)