Добрый день. Я запутался. Надо было мне вывести список из массива:
А
Андрей
Александр
Б
Борис
Балда
с ним всё ок
$model = ["alex", "gina", "gena", "reva","psih","ter","denis"];
$result = array();
{
parent::init();
sort($this->model);
}
public function run()
{
$result = array();
$previous = null;
$i = 0;
foreach ($this->model as $value) {
$firstLetter = substr($value, 0, 1);
if ($previous !== $firstLetter) {
$result[$i] = mb_convert_case($firstLetter, MB_CASE_UPPER, "UTF-8");
$i++; //тут просто для ясности
}
$result[$i] = $value;
$previous = $firstLetter;
$i++;
}
return $this->render('index', ['result' => $result]);
}
и вывод
<ul>
<?php
foreach ($result as $res) {
if (iconv_strlen($res) == 1) {
?> <li class="list__item--one">
<?php echo $res; ?></li>
<?php
} else {
?>
<li class="list__item"><a href="">
<?php echo $res ?></a> </li> <?php
}
}
?>
</ul>
Всё отлично выводится
Но напомнили мне, что это не просто имена, а ссылки с урлами. Соответственно массив будет другой
array(6) { [0]=> array(3) { ["id"]=> string(1) "1" ["name"]=> string(4) "Alex" ["url_name"]=> string(8) "url_Alex" } [3]=> array(3) { ["id"]=> string(1) "6" ["name"]=> string(5) "Denis" ["url_name"]=> string(9) "url_denis" } [1]=> array(3) { ["id"]=> string(1) "2" ["name"]=> string(4) "Gast" ["url_name"]=> string(8) "url_gast" } [2]=> array(3) { ["id"]=> string(1) "5" ["name"]=> string(4) "Gina" ["url_name"]=> string(8) "url_gina" } [4]=> array(3) { ["id"]=> string(1) "9" ["name"]=> string(8) "Ortopedy" ["url_name"]=> string(12) "url_ortopedy" } [5]=> array(3) { ["id"]=> string(2) "10" ["name"]=> string(4) "Torn" ["url_name"]=> string(9) "url_thorn" }
т.е. состоящим из других массивов. Отсортировать я его смогу, конечно, но как мне его вывести так, чтобы была буква?
A
Alex
Мне же надо её куда то записать? создать элемент массива двумерного между другими элементами? Чего то я затупил