【问题标题】:Print array separating values in groups with same substring打印数组分隔具有相同子字符串的组中的值
【发布时间】:2014-01-25 04:59:56
【问题描述】:

我有一个数组,其中包含按域扩展排序的域列表,例如:

values[0] = "programming.ca";
values[1] = "Stackoverflow.ca";
values[2] = "question.com";
values[3] = "answers.com";
values[4] = "AASystems.com";
values[5] = "test.net";
values[6] = "hello.net";
values[7] = "apple.nl";
values[8] = "table.org";
values[9] = "demo.org";

如何打印此数组,同时自动将其分组为具有相同域扩展名并由换行符<br /> 分隔的组,结果将如下所示?

programming.ca
Stackoverflow.ca

question.com
answers.com
AASystems.com

test.net
hello.net

apple.nl

table.org
demo.org

【问题讨论】:

  • explode('.', $str); 并使用结果?
  • 如何在保留原始形式的域的同时实现爆炸?看起来explode拆分了字符串
  • @Acidon 有你检查我的答案

标签: php arrays printing line-breaks


【解决方案1】:

试试这个。

$ext = "";
for($i = 0; $i < count($values); $i++) {
    $parts = explode('.', $values[$i]);
    $e = $parts[count($parts) - 1];
    if(strcmp($parts[count($parts) - 1], $ext) != 0) {
        $ext = $e;
        echo '<br/>';
    }
    echo $values[$i].'<br/>';
}

【讨论】:

  • 啊,这和上面那个人一样,我扔硬币,他赢了……还是谢谢你!
【解决方案2】:

如果域名按域扩展顺序排列,请尝试此操作,

$values[0] = "programming.ca";
$values[1] = "Stackoverflow.ca";
$values[2] = "question.com";
$values[3] = "answers.com";
$values[4] = "AASystems.com";
$values[5] = "test.net";
$values[6] = "hello.net";
$values[7] = "apple.nl";
$values[8] = "table.org";
$values[9] = "demo.org";


$prev_ext = "";

foreach($values as $domain_name)
{
    $arr_temp = explode(".", $domain_name);
    $domain_ext = $arr_temp[1];

    if($prev_ext!=$domain_ext)
    {
        echo '<br/></br/><br/>';
    }

    echo $domain_name."<br/>";
    $prev_ext = $domain_ext;
}

更新:2

如果域名不按扩展顺序排列,请尝试此操作

   $values[0] = "programming.ca";
$values[1] = "AASystems.com";
$values[2] = "demo.org";
$values[3] = "answers.com";
$values[4] = "Stackoverflow.ca";
$values[5] = "test.net";
$values[6] = "hello.net";
$values[7] = "apple.nl";
$values[8] = "table.org";
$values[9] = "question.com";

$arr_domains = array();

foreach($values as $domain_name)
{
    $arr_temp = explode(".", $domain_name);
    $domain_ext = $arr_temp[1];

    $arr_domains[$domain_ext][] = $domain_name;
}

foreach($arr_domains as $ext=>$arr_name)
{
    echo "<br/><br/><b>".$ext."</b><br/>";
    foreach($arr_name as $name)
    {
         echo $name."<br/>";
    }
}

【讨论】:

    【解决方案3】:

    我进行了编辑以希望使命名更清晰。基本上,分解每个域以获取 name.extension,然后将每个名称存储在 (extension,domainArray) 对的字典中,然后在字典中 foreach 条目,获取 domainArray,然后在 domainArray 中 foreach 名称,回显域名。扩展名,然后是换行符,然后是每个字典条目的另一个换行符。

    <?php
    
    $values[0] = "programming.ca";
    $values[1] = "Stackoverflow.ca";
    $values[2] = "question.com";
    $values[3] = "answers.com";
    $values[4] = "AASystems.com";
    $values[5] = "test.net";
    $values[6] = "hello.net";
    $values[7] = "apple.nl";
    $values[8] = "table.org";
    $values[9] = "demo.org";
    
    $domainsList = [];
    foreach ($values as $val) {
        $valArr = explode(".", $val);
        $name = $valArr[0];
        $extension = $valArr[1];
        if (isset($domainsList[$extension])) {
            $domainsList[$extension][] = $name;
        } else {
            $domainsList[$extension] = [$name];
        }
    }
    
    foreach ($domainsList as $extension => $domains) {
        foreach ($domains as $domain) {
            echo $domain . "." . $extension . "<br />";
        }
        echo "<br />";
    }
    

    【讨论】:

      【解决方案4】:

      试试这个代码。

      $domian = array(
          "programming.ca",
          "Stackoverflow.ca",
          "question.com",
          "answers.com",
          "AASystems.com",
          "test.net",
          "hello.net",
          "apple.nl",
          "table.org",
          "demo.org");
      
      $result;
      
      foreach ($domian as $value) {
          $arr = explode('.', $value);
          $result[$arr[1]][] = $value;
      }
      
      print_r($result);      
      

      【讨论】:

        猜你喜欢
        • 2021-06-18
        • 1970-01-01
        • 2021-04-23
        • 2015-09-08
        • 1970-01-01
        • 1970-01-01
        • 2021-05-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多