Дан массив,необходимо вывести список

198
19 мая 2018, 03:50
//Дан массив:

$links = [
    'Google' => [
        'Mail' => ['http://gmail.com', true, true],
        'Adwords' => ['http://google.com/adwords', true, false],
        'Adsense' => ['http://google.com/adwords', false, true]
    ],
    'Яндекс' => [
        'Метрика' => ['http://metrika.yandex.ru', false, false],
        'Direct' => ['http://direct.yandex.ru', true, true]
    ],
    'Yahoo' => ['http://yahoo.com', false, true]
];
//Необходимо вывести список:
<ul>
    <li>
        Google
        <ul>
            <li><a href="http://gmail.com" target="_blank" rel="nofollow">Mail</a></li>
            <li><a href="http://google.com/adwords" target="_blank">Adwords</a></li>
            <li><a href="http://google.com/adwords" rel="nofollow">Adsense</a></li>
        </ul>
    </li>
    <li>
        Яндекс
        <ul>
            <li><a href="http://metrika.yandex.ru">Метрика</a></li>
            <li><a href="http://direct.yandex.ru" target="_blank" rel="nofollow">Direct</a></li>
        </ul>
    </li>
    <li>
        <a href="http://yahoo.com">Yahoo</a>
    </li>
</ul>
Answer 1

Вот такая версия.

$links = [
    'Google' => [
            'Mail' => ['http://gmail.com', true, true],
            'Adwords' => ['http://google.com/adwords', true, false],
            'Adsense' => ['http://google.com/adwords', false, true]
    ],
    'Яндекс' => [
            'Метрика' => ['http://metrika.yandex.ru', false, false],
            'Direct' => ['http://direct.yandex.ru', true, true]
    ],
    'Yahoo' => ['http://yahoo.com', false, true],
    'Bing'  => ['https://bing.com', false, true]
];
//----------------------------------------------------------------
//  Helping methods
//----------------------------------------------------------------
function attr_print($att1, $att2){
    $target = $att1 ?  "target='_blank'" : '';
    $nofollow = $att2 ? "rel='nofollow'" : '';
    return $target . " " . $nofollow;
}
// https://stackoverflow.com/a/173479
function isAssoc(array $arr)
{
    if (array() === $arr) return false;
    return array_keys($arr) !== range(0, count($arr) - 1);
}
//----------------------------------------------------------------
echo '<ul>';          
foreach( $links as $engine_name => $services ){
 $li = "<li>"; // Clear li
  if(isAssoc($services)){
      $li .=  $engine_name . '<ul>';
      foreach($services as $disc => $link){
        $li .=  '<li>';
        $li .= '<a href="' . $link[0] . '"';   
        $li .= attr_print($link[1], $link[2]);
        $li .= '>'; // Closing a
        $li .= $disc;
        $li .= '</a>';
        $li .= '</li>';
      }
       $li .= '</ul></li>';
    }else{ // Array ( [0] => http://yahoo.com [1] => false [2] => true ) regular
       $li .= '<a href="' . $services[0] . '" ';
       $li .= attr_print($services[1], $services[2]);
       $li .= '>'; // Closing a
       $li .= $engine_name;
       $li .= '</a></li>';
    }
    echo $li;
}
Answer 2

Если Я правильно понимаю, то должно все выглядеть как-то вот так.

$links = [
    'Google' => [
        'Mail' => ['http://gmail.com', true, true],
        'Adwords' => ['http://google.com/adwords', true, false],
        'Adsense' => ['http://google.com/adwords', false, true]
    ],
    'Яндекс' => [
        'Метрика' => ['http://metrika.yandex.ru', false, false],
        'Direct' => ['http://direct.yandex.ru', true, true]
    ],
    'Yahoo' => ['http://yahoo.com', false, true]
];
echo "<ul>";
foreach($links as $name=>$link) {
    echo "<li>";
    echo "$name";
    echo "<ul>";
    foreach($link as $item=>$value) {
       $blank = $value[1]==true ? "target='_blank'" : "";
       $nofollow = $value[2]==true ? "rel='nofollow'" ? "";
       echo "<li><a href='$value[0]' $blank $nofollow>$item</a></li>"
    }
    echo "</ul>";
    echo "</li>";
}
echo "</ul>";

UPD. Забыл добавить echo для HTML элементов. Укажите версию PHP. Возможно такой вывод недоступен в вашей версии, Я перепишу под вас.

READ ALSO
Ошибка при импорте БД в phpmyadmin

Ошибка при импорте БД в phpmyadmin

Понадобилось написать сервер на php с mysqlНашел сайт с бесплатным хостингом, создал там БД, открываю управление через phpmyadmin, которое там уже...

198
Роутинг для единой точки входа

Роутинг для единой точки входа

Возникла проблема

196
Планировщик изменения записи в БД Php Symfony2

Планировщик изменения записи в БД Php Symfony2

Всем привет! Интересует такой вопрос: Как на Php (на проекте используется Symfony 2) реализовать изменение записей в БД по определенному времени

183
Роутинг для одной точки входа

Роутинг для одной точки входа

Как сделать для запросов вида:

189