Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中循环多维数组中的数据并将其注入HTML_Php_Loops_Multidimensional Array_Foreach - Fatal编程技术网

如何在PHP中循环多维数组中的数据并将其注入HTML

如何在PHP中循环多维数组中的数据并将其注入HTML,php,loops,multidimensional-array,foreach,Php,Loops,Multidimensional Array,Foreach,我对PHP相当陌生,仍然在为最简单的任务而挣扎。我在互联网上搜索过,但没有找到或找到正确的解决方案 假设我有两个页面:一个是index.php,我想在其中显示超链接列表以及这些链接指向的各个页面的名称。另一个是functions.php,我在其中存储了一个包含链接和标题的数组。另外,我知道数组可以存储在比functions.php更好的地方,但目前这还不是重点 这是index.php页面上的我的HTML: <ul class="row"> <li class="col-6 c

我对PHP相当陌生,仍然在为最简单的任务而挣扎。我在互联网上搜索过,但没有找到或找到正确的解决方案

假设我有两个页面:一个是index.php,我想在其中显示超链接列表以及这些链接指向的各个页面的名称。另一个是functions.php,我在其中存储了一个包含链接和标题的数组。另外,我知道数组可以存储在比functions.php更好的地方,但目前这还不是重点

这是index.php页面上的我的HTML:

<ul class="row">

<li class="col-6 col-lg-4">
  <a class="hyperlink" href="<?php echo $pageitem['link'] ?>">
    <div class="page-item">
      <**SVG icon goes here, disregard**>
      <span><?php echo $pageitem['title'] ?></span>
    </div>
  </a>
</li>

<li class="col-6 col-lg-4">
  <a class="hyperlink" href="<?php echo $pageitem['link'] ?>">
    <div class="page-item">
      <**SVG icon goes here, disregard**>
      <span><?php echo $pageitem['title'] ?></span>
    </div>
  </a>
</li>

<li class="col-6 col-lg-4">
  <a class="hyperlink" href="<?php echo $pageitem['link'] ?>">
    <div class="page-item">
      <**SVG icon goes here, disregard**>
      <span><?php echo $pageitem['title'] ?></span>
    </div>
  </a>
</li>

</ul>
这是我的函数,我希望它能循环遍历每个子数组,并在index.php页面的页面项中显示链接和标题:

$i = 0;

foreach ( $pageitems as $pageitem ) {
  $i++;
  foreach ( $pageitem as $key => $value )
  {
  return $pageitem['link'];
  return $pageitem['title'];
  }
}

但是没有-它只会在索引页面上的每个页面项目上重复第一个链接和标题对(website-one.com,website 1),就像循环在第一次迭代后被卡住一样。

我想你必须迭代你拥有的数组,并将
li
放入foreach循环中,如下所示:

<ul class="row">

<?php
    $pageitems = array (
        array('link' => 'https://website-one.com', 'title' => 'Website 1'),
        array('link' => 'https://website-two.com', 'title' => 'Website 2'),
        array('link' => 'https://website-three.com', 'title' => 'Website 3'),
    );

    foreach ($pageitems as $pageitem) {
?>

<li class="col-6 col-lg-4">
  <a class="hyperlink" href="<?php echo $pageitem['link'] ?>">
    <div class="page-item">
      <**SVG icon goes here, disregard**>
      <span><?php echo $pageitem['title'] ?></span>
    </div>
  </a>
</li>

<?php
    }
?>
</ul>

如果将
$pageitems
放在不同的文件中更好,可以使用
include('function.php')foreach循环之前的任何一点。

返回$pageitem毫无意义,函数中的代码没有被调用,html需要进入foreach内部,实际上,您只需要其中一个函数来完成您想要的操作,方法是执行返回(return$pageitem['link'];)您从内部的函数返回,而不仅仅是for循环。这就是为什么它在第一次迭代中被卡住的原因。这个答案可能会复制OP在工作中的(潜在的)XSS vulns。当你发现这类事情时,在回答中记下这类事情可能是值得的,这样可以提醒OP注意一些可能会让他们的网站遭到黑客攻击的事情。
<ul class="row">

<?php
    $pageitems = array (
        array('link' => 'https://website-one.com', 'title' => 'Website 1'),
        array('link' => 'https://website-two.com', 'title' => 'Website 2'),
        array('link' => 'https://website-three.com', 'title' => 'Website 3'),
    );

    foreach ($pageitems as $pageitem) {
?>

<li class="col-6 col-lg-4">
  <a class="hyperlink" href="<?php echo $pageitem['link'] ?>">
    <div class="page-item">
      <**SVG icon goes here, disregard**>
      <span><?php echo $pageitem['title'] ?></span>
    </div>
  </a>
</li>

<?php
    }
?>
</ul>