在 php 中的标题字符下显示 li 项目 column-wise
display li items column-wise under title characters in php
我有一个如下所示的 php 代码,其中通过 B 行,我计算了按字母顺序对数组结果进行分组时使用的标题字符。
A 行打印 4。DEMO
php代码:
<?php
$beta_lists = array (
'Àpple' => 'http://www.abc.mno/apple/',
'Ball' => 'http://www.abc.mno/ball/',
'Builders' => 'http://www.abc.mno/builders/',
'Bowling' => 'http://www.abc.mno/bowling/',
'Correct' => 'http://www.abc.mno/correct/',
'Campaign' => 'http://www.abc.mno/compain/',
'Direct' => 'http://www.abc.mno/direct/',
'Degree' => 'http://www.abc.mno/degree/'
);
ksort($beta_lists);
$groups = array();
foreach ($beta_lists as $title => $value) {
$groups[remove_accents(mb_substr($title, 0, 1))][$title] = $value;
}
ksort($groups);
print_r($groups);
echo count($groups); // Line A
if(count($groups)%2==0) {
} else {
}
问题陈述:
我想知道我应该在上面的 php 代码中进行哪些更改,以便它打印列表项 column-wise (在如下所示的 2 列中) 在标题字符下。
第 2 列应始终以标题字符而不是列表项开头。对于偶数个标题字符,50% 的标题字符及其列表项应位于左侧
50% 的标题字符及其列表项应位于右侧。
如果我们有奇数个标题字符(比如说 7 个),那么 4 个标题字符应该在第一列,3 个标题字符应该在第二列
列 没有任何列表在第 2 列中被孤立 。
A C
Apple Correct
B Compaingn
Ball D
Builders Direct
Bowling Degree
这是我试过的:
以下 html 代码需要与上面的 php 代码集成,以便列表显示 column-wise 在 标题字符 下。
html代码:
<ul class="shows-list">
<li class="shows-list__letter">
<h1 class="shows-list__letter-title"><?php echo esc_html( $title_character ) ?></h1> <!-- For title character -->
<a class="shows-list__link" href="<?php echo esc_url( $permalink ); ?>"><h2 class="shows-list__title"><?php echo esc_html( $title ); ?></h2></a>
</li>
</ul>
这里 $title 是 Apple、Ball、Builders、Bowling、Correct、Compaign、Direct 和 Degree。
一种可能的解决方案是将左右列提取到单独的数组中。
PHP:
<?php
$beta_lists = [
'Apple' => 'http://www.abc.mno/apple/',
'Ball' => 'http://www.abc.mno/ball/',
'Builders' => 'http://www.abc.mno/builders/',
'Bowling' => 'http://www.abc.mno/bowling/',
'Correct' => 'http://www.abc.mno/correct/',
'Campaign' => 'http://www.abc.mno/compain/',
'Direct' => 'http://www.abc.mno/direct/',
'Degree' => 'http://www.abc.mno/degree/',
//'Example' => 'http://www.abc.mno/example/',
];
ksort($beta_lists);
$groups = [];
foreach ($beta_lists as $title => $value) {
$groups[remove_accents(mb_substr($title, 0, 1))][$title] = $value;
}
ksort($groups);
$left = array_slice($groups, 0, ceil(count($groups) / 2));
$right = array_slice($groups, count($left));
HTML:
<ul class="shows-list">
<?php foreach ($left as $title_character => $meta): ?>
<li class="shows-list__letter">
<h1 class="shows-list__letter-title"><?= esc_html( $title_character ) ?></h1> <!-- For title character -->
<?php foreach ($meta as $title => $permalink): ?>
<a class="shows-list__link" href="<?= esc_url( $permalink ); ?>"><h2 class="shows-list__title"><?= esc_html( $title ); ?></h2></a>
<?php endforeach; ?>
</li>
<?php endforeach; ?>
</ul>
并以这种方式打印右栏。
我有一个如下所示的 php 代码,其中通过 B 行,我计算了按字母顺序对数组结果进行分组时使用的标题字符。 A 行打印 4。DEMO
php代码:
<?php
$beta_lists = array (
'Àpple' => 'http://www.abc.mno/apple/',
'Ball' => 'http://www.abc.mno/ball/',
'Builders' => 'http://www.abc.mno/builders/',
'Bowling' => 'http://www.abc.mno/bowling/',
'Correct' => 'http://www.abc.mno/correct/',
'Campaign' => 'http://www.abc.mno/compain/',
'Direct' => 'http://www.abc.mno/direct/',
'Degree' => 'http://www.abc.mno/degree/'
);
ksort($beta_lists);
$groups = array();
foreach ($beta_lists as $title => $value) {
$groups[remove_accents(mb_substr($title, 0, 1))][$title] = $value;
}
ksort($groups);
print_r($groups);
echo count($groups); // Line A
if(count($groups)%2==0) {
} else {
}
问题陈述:
我想知道我应该在上面的 php 代码中进行哪些更改,以便它打印列表项 column-wise (在如下所示的 2 列中) 在标题字符下。
第 2 列应始终以标题字符而不是列表项开头。对于偶数个标题字符,50% 的标题字符及其列表项应位于左侧 50% 的标题字符及其列表项应位于右侧。
如果我们有奇数个标题字符(比如说 7 个),那么 4 个标题字符应该在第一列,3 个标题字符应该在第二列 列 没有任何列表在第 2 列中被孤立 。
A C
Apple Correct
B Compaingn
Ball D
Builders Direct
Bowling Degree
这是我试过的:
以下 html 代码需要与上面的 php 代码集成,以便列表显示 column-wise 在 标题字符 下。
html代码:
<ul class="shows-list">
<li class="shows-list__letter">
<h1 class="shows-list__letter-title"><?php echo esc_html( $title_character ) ?></h1> <!-- For title character -->
<a class="shows-list__link" href="<?php echo esc_url( $permalink ); ?>"><h2 class="shows-list__title"><?php echo esc_html( $title ); ?></h2></a>
</li>
</ul>
这里 $title 是 Apple、Ball、Builders、Bowling、Correct、Compaign、Direct 和 Degree。
一种可能的解决方案是将左右列提取到单独的数组中。
PHP:
<?php
$beta_lists = [
'Apple' => 'http://www.abc.mno/apple/',
'Ball' => 'http://www.abc.mno/ball/',
'Builders' => 'http://www.abc.mno/builders/',
'Bowling' => 'http://www.abc.mno/bowling/',
'Correct' => 'http://www.abc.mno/correct/',
'Campaign' => 'http://www.abc.mno/compain/',
'Direct' => 'http://www.abc.mno/direct/',
'Degree' => 'http://www.abc.mno/degree/',
//'Example' => 'http://www.abc.mno/example/',
];
ksort($beta_lists);
$groups = [];
foreach ($beta_lists as $title => $value) {
$groups[remove_accents(mb_substr($title, 0, 1))][$title] = $value;
}
ksort($groups);
$left = array_slice($groups, 0, ceil(count($groups) / 2));
$right = array_slice($groups, count($left));
HTML:
<ul class="shows-list">
<?php foreach ($left as $title_character => $meta): ?>
<li class="shows-list__letter">
<h1 class="shows-list__letter-title"><?= esc_html( $title_character ) ?></h1> <!-- For title character -->
<?php foreach ($meta as $title => $permalink): ?>
<a class="shows-list__link" href="<?= esc_url( $permalink ); ?>"><h2 class="shows-list__title"><?= esc_html( $title ); ?></h2></a>
<?php endforeach; ?>
</li>
<?php endforeach; ?>
</ul>
并以这种方式打印右栏。