Domanda

I have an array with a list of domains sorted by domain extensions, like:

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";

How do I print this array, while automatically grouping it in groups with same domain extension and separated by the line break <br />, so the result will look like this?

programming.ca
Stackoverflow.ca

question.com
answers.com
AASystems.com

test.net
hello.net

apple.nl

table.org
demo.org
È stato utile?

Soluzione 2

try this if domain names are in order of domain extensions,

$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;
}

UPDATE : 2

try this if domain names are not in order of their extensions

   $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/>";
    }
}

Altri suggerimenti

Try this.

$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/>';
}

I edited to hopefully make naming clearer. Basically, explode each domain to get name.extension, then store each name in a dictionary of (extension,domainArray) pairs, then foreach entry in the dictionary, grab the domainArray, then foreach name in the domainArray, echo out the domain name . extension, then a line break, then another line break for every dictionary entry.

<?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 />";
}

Try this code.

$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);      
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top