如何使用串联将项从循环包装到元素中


How to wrap item from loop into element with concatenation?

我正试图从循环中推送一些项以获得字符串。

我有一个$liste_mots阵列:

  0 => 
    array (size=5)
      'mot' => 
        array (size=7)
          0 => 
            array (size=5)
              'mot' => string 'My'
              'start' => float 0
              'end' => float 1 
          1 => 
            array (size=5)
              'mot' => string 'Name'  
              'start' => float 2
              'end' => float 3         
      'ID' => float 1
1 => 
    array (size=5)
      'mot' => 
        array (size=7)
          0 => 
            array (size=5)
              'mot' => string 'Is'
              'start' => float 4
              'end' => float 5 
          1 => 
            array (size=5)
              'mot' => string 'Zooboo' 
              'start' => float 6
              'end' => float 7        
      'ID' => float 2

我想要的是这样的东西:

<div id='1'><span data-start='0' data-end='1'>My</span><span data-start='2' data-end='3'>Name</span></div><div id='2'><span data-start='4' data-end='5'>Is</span><span data-start='6' data-end='7'>Zooboo</span></div>

我做到了:

$response = "";
      foreach ($liste_mots as $key => $item) {
             $response  = "<div id='" . $item['ID'] . "'>";
                foreach ($liste_mots[$key]['mot'] as $idx => $itm) {
                    $response .= "<span data-start='".$itm['start']."' data-end='".$itm['end']."'>" . $itm['mot'] . "</span></div>";
                }
            }
var_dump($response); die;

但有了var_dump,我只有最后一个没有spandiv。。。

我哪里错了?

每次通过外循环重置$response。您需要在那里使用串联,就像在内部循环中一样。您还需要在外循环中结束div,而不是在内循环中的每个span之后。

$response = "";
foreach ($liste_mots as $key => $item) {
    $response .= "<div id='" . $item['ID'] . "'>";
    foreach ($liste_mots[$key]['mot'] as $idx => $itm) {
        $response .= "<span data-start='".$itm['start']."' data-end='".$itm['end']."'>" . $itm['mot'] . "</span>";
    }
    $response .= "</div>";
}
var_dump($response); die;

您在错误的循环中关闭div,它应该是这样的

$response = "";
foreach ($liste_mots as $key => $item) {
    $response  .= "<div id='" . $item['ID'] . "'>";
        foreach ($liste_mots[$key]['mot'] as $idx => $itm) {
            $response .= "<span data-start='".$itm['start']."' data-end='".$itm['end']."'>" . $item['mot'] . "</span>";
        }
    $response  .= "</div>";
}
var_dump($response); die;