Php 如何在使用数组';什么东西?
我有这样一个数组:Php 如何在使用数组';什么东西?,php,html,arrays,Php,Html,Arrays,我有这样一个数组: $results = $stmt->fetchAll(PDO::FETCH_ASSOC); /* Array ( [0] => Array ( [id] => 191 [name] => Ali [range] => today ) [1] => Array ( [id] =&g
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
/*
Array
(
[0] => Array
(
[id] => 191
[name] => Ali
[range] => today
)
[1] => Array
(
[id] => 190
[name] => John
[range] => today
)
[2] => Array
(
[id] => 189
[name] => peter
[range] => in last week
)
[3] => Array
(
[id] => 180
[name] => Ali
[range] => in last week
)
[4] => Array
(
[id] => 170
[name] => Jack
[range] => in last week
)
)
*/
<div id = "notification_box">
<div class= "cases">
<div class="title">today</div>
<table>
<tr>
<td>191</td>
<td>Ali</td>
</tr>
<tr>
<td>190</td>
<td>John</td>
</tr>
</table>
</div>
<div class= "cases">
<div class="title">yesterday</div>
</div>
<div class= "cases">
<div class="title">in last week</div>
<table>
<tr>
<td>189</td>
<td>Peter</td>
</tr>
<tr>
<td>180</td>
<td>Ali</td>
</tr>
<tr>
<td>170</td>
<td>Jack</td>
</tr>
</table>
</div>
</div>
我正在尝试动态生成一个HTML,如下所示:
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
/*
Array
(
[0] => Array
(
[id] => 191
[name] => Ali
[range] => today
)
[1] => Array
(
[id] => 190
[name] => John
[range] => today
)
[2] => Array
(
[id] => 189
[name] => peter
[range] => in last week
)
[3] => Array
(
[id] => 180
[name] => Ali
[range] => in last week
)
[4] => Array
(
[id] => 170
[name] => Jack
[range] => in last week
)
)
*/
<div id = "notification_box">
<div class= "cases">
<div class="title">today</div>
<table>
<tr>
<td>191</td>
<td>Ali</td>
</tr>
<tr>
<td>190</td>
<td>John</td>
</tr>
</table>
</div>
<div class= "cases">
<div class="title">yesterday</div>
</div>
<div class= "cases">
<div class="title">in last week</div>
<table>
<tr>
<td>189</td>
<td>Peter</td>
</tr>
<tr>
<td>180</td>
<td>Ali</td>
</tr>
<tr>
<td>170</td>
<td>Jack</td>
</tr>
</table>
</div>
</div>
今天
191
阿里
190
约翰
昨天
在上周
189
彼得
180
阿里
170
杰克
这是我的密码:
$html = '';
$last_item_range = '';
foreach ( $results as $key => $item )
{
$next_item = ( is_array($results[$key+1]) ) ? $results[$key+1] : null;
if ( $item['range'] != $last_item_range )
{
$html .= '<div class="cases">';
$html .= sprintf('<div class="title">%s</div>', $item['range']);
$html .= '<table>';
$last_item_range = $item['range'];
}
$html .= '<tr>';
foreach($item as $value){ $html .= sprintf('<td>%s</td>', $value); }
$html .= '</tr>';
if ( $next_item['range'] != $item['range'] )
{
$html .= '</table>';
$html .= '</div>';
}
}
echo $html;
$html='';
$last_item_range='';
foreach($key=>$item的结果)
{
$next_item=(是_数组($results[$key+1])?$results[$key+1]:null;
如果($item['range']!=$last\u item\u range)
{
$html.='';
$html.=sprintf(“%s”,$item['range']);
$html.='';
$last_item_range=$item['range'];
}
$html.='';
foreach($item as$value){$html.=sprintf('%s',$value);}
$html.='';
如果($next_item['range']!=$item['range']))
{
$html.='';
$html.='';
}
}
echo$html;
但是这一行$results[$key+1]
抛出了以下通知:
注意:未定义的偏移量
我怎样才能修好它
另外,你能告诉我我做得对吗?或者有更好的算法来生成HTML?使用两个循环来尝试此解决方案
$new_list = array();
foreach( $array_list as $list )
$new_list[$list['range']][] = $list;
?>
<div id="notification_box">
<?php foreach( $new_list as $item_name => $items ): ?>
<div class= "cases">
<div class="title"><?php echo $item_name ?></div>
<?php
if( $items && is_array( $items ) ) {
?>
<table>
<?php foreach( $items as $item ): ?>
<tr>
<td><?php echo $item['id'] ?></td>
<td><?php echo $item['name'] ?></td>
</tr>
<?php endforeach; ?>
</table>
<?php
}
?>
</div>
<?php endforeach; ?>
</div>
$new_list=array();
foreach($array\u列表为$list)
$new_list[$list['range'][]=$list;
?>
查看完整结果:可能使用
isset($results[$key+1]
而不是is\u数组($results[$key+1]
@MarkBaker做得很好。请你告诉我我做得对吗?或者我应该用另一种方法做吗?我很确定有更好的方法来设置纯css中的列数,但我不是cssForeach方面的专家,它会通过所有元素进行迭代。一旦它到达最后一个元素,然后你再尝试获取一个,这是显而易见的它会抛出那个错误。@MarkBaker“列数”到底是什么意思?接受这个答案,它可能对其他人有帮助