Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在使用数组';什么东西?_Php_Html_Arrays - Fatal编程技术网

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“列数”到底是什么意思?接受这个答案,它可能对其他人有帮助