【发布时间】:2019-12-01 08:53:34
【问题描述】:
我首先要说我是 PHP 新手,但设法将这个贯穿数组的 foreach 循环破解在一起,但没有显示任何内容,并且我收到一条错误消息,提示“为 foreach() 提供的参数无效'。
这个想法是它应该随机显示 3 个项目而不重复它们,如果页面 URL 与 project_url 变量匹配,则不会显示该特定项目。
尝试搜索类似的问题,但据我所知,我似乎无法找到任何适合我的情况。非常感谢任何帮助!
<?php
$recent_projects = array(
array(
project_img => 'assets/img.jpg',
project_title => 'Project Name',
project_cat => 'Project Category',
project_url => 'project-name',
project_alttag => 'Project Name',
project_titletag => 'Project name',
project_nofollow => 'follow'
),
array(
project_img => 'assets/img.jpg',
project_title => 'Project Name',
project_cat => 'Project Category',
project_url => 'project-name',
project_alttag => 'Project Name',
project_titletag => 'Project name',
project_nofollow => 'follow'
),
array(
project_img => 'assets/img.jpg',
project_title => 'Project Name',
project_cat => 'Project Category',
project_url => 'project-name',
project_alttag => 'Project Name',
project_titletag => 'Project name',
project_nofollow => 'follow'
),
array(
project_img => 'assets/img.jpg',
project_title => 'Project Name',
project_cat => 'Project Category',
project_url => 'project-name',
project_alttag => 'Project Name',
project_titletag => 'Project name',
project_nofollow => 'follow'
)
);
$show_x_projects = 3; // How may projects to show
$i = 0;
$current_page = trim($_SERVER['REQUEST_URI'], '/');
$random_projects = array_rand($recent_projects);
?>
<?php foreach($random_projects as $recent_projects):
$item = (object)$recent_projects;
if($current_page == $item->project_url) continue;
$i++;
if($i >= $show_x_projects) continue; ?>
<div class="col-sm-12 col-md-4">
<figure>
<img class="img-fluid" src="<?php echo $item->project_img; ?>" alt="<?php echo $item->project_alttag; ?>" title="<?php echo $item->project_titletag; ?>">
<figcaption>
<h4><span><?php echo $item->project_title; ?></span></h4>
<p><?php echo $item->project_cat; ?></p>
<a href="<?php echo $item->project_url; ?>" rel="<?php echo $item->project_nofollow; ?>"></a>
<p class="view-project-link">View Project →</p>
</figcaption>
</figure>
</div>
<?php endforeach; ?>
【问题讨论】:
-
您尝试过什么调试问题?将页面 URL 与项目 URL 进行比较的代码在哪里?
-
array_rand($recent_pProjects, 3);是$recent_projects,而不是$recent_pProjects。另外,在数组键周围添加引号 -
请先启用适当的 PHP 错误报告功能 - 然后 PHP 有机会告诉您类似的事情本身。
-
@kerbholz 我不小心粘贴了错误的代码 sn-p,我已经更新了但这不是问题。