具有多个类别的投资组合


portfolio with multiple categories

我想制作一个包含多个类别的项目的投资组合。这是我的解决方案。

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