我如何在各种 div 中显示我的 preg_match 结果,以便它们可以在正确的标题下有多个结果?

How can i display my preg_match results in various divs so they can have multiple results under the correct heading?

如果这很简单,请原谅我,但我有一个 for each 循环,用于搜索 JSON 数据以获取搜索结果。然后我有一些 preg_match 语句,这些语句将查看 JSON 中的一些标签,如果它们匹配,则在 div 中显示缩略图。目前这一切都有效。但它目前在其自己的 Div 中显示每个结果,如果有匹配项,我只需要五个 divs,其中包含多个图像。

foreach ($hits as $hit)
{
  
  $target = $hit->metadata->baseName;
  $target1 = $hit->metadata->cf_imageType;

  if(preg_match("/_cm/i",$target)) {
    echo '<div id="div5">';
    echo '<h2>Creative</h2>';
    echo "<img src='" . $hit->thumbnailUrl . "' alt='error'>";
    echo $hit->metadata->baseName; 
    echo '</div>';
  }
  if(preg_match("/_SS/i",$target)) {
    echo '<div id="div6">';
    echo '<h2>Styled</h2>';
    echo "<img src='" . $hit->thumbnailUrl . "' alt='error'>";
    echo $hit->metadata->baseName; 
    echo '</div>';
  }
  if(preg_match("/_SH/i",$target)) {
    echo '<div id="div7">';
    echo '<h2>Group</h2>';
    echo "<img src='" . $hit->thumbnailUrl . "' alt='error'>";
    echo $hit->metadata->baseName; 
    echo '</div>';
  }
  if(preg_match("/still life/i",$target1) && preg_match("/_sm_00|_sd_00/i",$target)) {
    echo '<div id="div8">';
    echo '<h2>Cutout</h2>';
    echo "<img src='" . $hit->thumbnailUrl . "' alt='error'>";
    echo $hit->metadata->baseName; 
    echo '</div>';
  }
  if(preg_match("/worn/i",$target1)) {
    echo '<div id="div9">';
    echo '<h2>Worn</h2>';
    echo "<img src='" . $hit->thumbnailUrl . "' alt='error'>";
    echo $hit->metadata->baseName; 
    echo '</div>';
  }
}

我不太明白如何做到这一点,是否可以将结果放入数组然后在 div 中显示结果?

如有任何帮助,我们将不胜感激。

你是对的,自己回答了问题:)

第一步收集结果,第二步创建标记。像这样就可以了:

$creative = [];
$styled   = [];

/* ... */

function getHitInfos($theHit)
{
    return [
      "url" => $theHit->thumbnailUrl,
      "name" => $theHit->metadata->baseName
    ];
}

function printResults($results, $title) {
    echo '<div>';
    echo '<h2>'.$title.'</h2>';

    foreach ($results as $key => $val) {
        echo "<img src='" . $val["url"] . "' alt='error'>";
        echo $val["name"]; 
    }
    echo '</div>';
}

foreach ($hits as $hit)
{
    $target  = $hit->metadata->baseName;
    $target1 = $hit->metadata->cf_imageType;

    echo '<div>';
    if(preg_match("/_cm/i",$target)) {
      $creative[] = getHitInfos($hit)
    }
    if(preg_match("/_SS/i",$target)) {
      $styled[] = getHitInfos($hit)
    }

    /* ... */
}

printResults($creative, "Creative");
printResults($styled, "Styled");

/* ... */

免责声明:我最后一次与 php 联系是几年前的事了,但我希望你能明白这里的意思。 (我还创建了一些帮助函数来 DRY 代码)