我想制作一个包含多个类别的项目的投资组合。这是我的解决方案。
category1.php是5个不同的分类页面之一…
<?php
$pageLabel = 'category1';
include 'category-overview.php';
?>
category-overview.php:
<?php
include 'multicats.php';
if ($pageLabel == 'category1') {
for ($i = 0; $i < count($category1); $i++) { ?>
<a href="<?php echo 'prjcts/' . $category1[$i] . '.php'?>"><img src="<?php echo 'thmbs/thumb-' . $category1[$i] . '.png';?>"/></a><?php
}
}
?>
我对每个类别重复if语句。
最后是multicats.php,其中包含将项目分类到类别的数组…
<?php
//this is arbitrary
$category1 = array('prjct1', 'prjct2', 'prjct5', 'prjct8', 'prjct10', 'prjct11');
$category2 = array('prjct1', 'prjct5', 'prjct8', 'prjct9', 'prjct11', 'prjct10');
$category3 = array('prjct1', 'prjct4', 'prjct2', 'prjct9', 'prjct11', 'prjct5');
$category4 = array('prjct3', 'prjct7', 'prjct8', 'prjct9', 'prjct4', 'prjct6');
$category5 = array('prjct5', 'prjct6', 'prjct3', 'prjct7', 'prjct9', 'prjct4');
?>
它工作得很好,除了我不知道如何在数组中显示所有项目的拇指并链接到index.php页面上,因为在所有数组中返回所有值将是重复的。
是否有更好、更优雅的解决方案?谢谢你的帮助!
可以使用多维数组:
<?php
//this is arbitrary
$cats['category1'] = array('prjct1', 'prjct2', 'prjct5', 'prjct8', 'prjct10', 'prjct11');
$cats['category2'] = array('prjct1', 'prjct5', 'prjct8', 'prjct9', 'prjct11', 'prjct10');
$cats['category3'] = array('prjct1', 'prjct4', 'prjct2', 'prjct9', 'prjct11', 'prjct5');
$cats['category4'] = array('prjct3', 'prjct7', 'prjct8', 'prjct9', 'prjct4', 'prjct');
$cats['category5'] = array('prjct5', 'prjct6', 'prjct3', 'prjct7', 'prjct9', 'prjct4');
?>
:
include 'multicats.php';
if (isset($cats[$pageLabel])) {
$cat = $cats[$pageLabel];
for ($i = 0; $i < count($cat); $i++) { ?>
<a href="<?php echo 'prjcts/' . $cat[$i] . '.php'?>"><img src=" <?php echo 'thmbs/thumb-' . $cat[$i] . '.png';?>"/></a><?php
}
}
?>
当然,使用array_map
将每个元素呈现为多维数组顶部的锚标记(因此您不必为每个类别设置许多不同的变量)
$categories = array(
'category1' => array('prjct1', 'prjct2', 'prjct5', 'prjct8', 'prjct10', 'prjct11'),
'category2' => array('prjct1', 'prjct5', 'prjct8', 'prjct9', 'prjct11', 'prjct10'),
'category3' => array('prjct1', 'prjct4', 'prjct2', 'prjct9', 'prjct11', 'prjct5'),
'category4' => array('prjct3', 'prjct7', 'prjct8', 'prjct9', 'prjct4', 'prjct'),
'category5' => array('prjct5', 'prjct6', 'prjct3', 'prjct7', 'prjct9', 'prjct4')
);
function arrayToLinks($a) {
$return = array();
foreach($a as $link) {
$return[] = "<a href='prjcts/". $link .".php'><img src='thmbs/thumb-". $link .".png'>". $link ."</a>";
}
return implode(PHP_EOL, $return);
}
echo implode(PHP_EOL, array_map('arrayToLinks', $category1));
https://eval.in/374334