【问题标题】:i array with 5 array inside and i need a foreach loop to print one from theme?我的数组里面有 5 个数组,我需要一个 foreach 循环来从主题打印一个?
【发布时间】:2019-07-05 17:16:45
【问题描述】:

我有这样的数组

Array
(
    [title] => Array
    (
        [0] => title1
        [1] => title2
        [2] => title3
    )

    [icon-class] => Array
    (
        [0] => class1
        [1] => class2
        [2] => class3
    )

    [text] => Array
    (
        [0] => text1
        [1] => text2
        [2] => text3
    )

    [link-text] => Array
    (
        [0] => link-text1
        [1] => link-text2
        [2] => link-text3
    )

    [link] => Array
    (
        [0] => link-text1
        [1] => link-text2
        [2] => link-text3
    )
)

我需要这样打印

     <ul>
 <li>
    <h3 class="class1">title1</h3>
    <p>text1</p>
    <a href="link">1</a>
</li>

</ul>

当我使用 for each 来回显它在行中打印的内容时,它首先回显标题然后链接然后类.. 我需要一个 for each 循环来生成这个 html 上面的html如何生成

【问题讨论】:

  • 打印怎么样?
  • 为什么你的数据源是这样分组的?这对我来说毫无意义。
  • 它由 JOOMLA REPEATBALE FIELD 制作
  • @user3231168 你的输出看起来不完整。数组中的其他值呢?

标签: php arrays foreach


【解决方案1】:
foreach($array['title'] as $key => $title){
   $class = $array['class'][$key];
   $link = $array['link'][$key];
   $text = $array['text'][$key];
   $linkText = $array['link-text'][$key];

   ?>
<li>
    <h3 class="<?=$class?>"><?=$title?></h3>
    <p><?=$text?></p>
    <a href="<?=$link?>"><?=$linkText?></a>
</li>
<?
}

【讨论】:

    【解决方案2】:

    是的,您可以做到,而且简单易行。 我有你的关联数组,我想打印每个标题及其值,

    所以我有:

    <?php
    
    $ar = Array(
        "title" => Array
        (
            "title1",
            "title2",
            "title3"
        ),
    
        "icon-class" => Array
        (
            "class1",
            "class2",
            "class3"
        ),
    
        "text" => Array
        (
            "text1",
            "text2",
            "text3"
        ),
    
        "link-text" => Array
        (
            "link-text1",
            "link-text2",
            "link-text3"
        ),
    
        "link" => Array
        (
            "link-text1",
            "link-text2",
            "link-text3"
        )
    );
    

    现在我想像这样简单地打印标题,

    echo "<h1>These are titles: </h1>";
    foreach ($ar["title"] as $key=>$value){
        echo $key . " : " . $value . "<br>";
    }
    

    但正如您所见,它不是一种打印的好方法,但您可以获得值, 现在我会告诉你一个更好的方法,

    echo "<h1>The better way is: </h1>";
    foreach ($ar as $key=>$value){
        echo $key . "<br>";
        foreach($value as $k=>$v){
            echo $k . " : " . $v . "<br>";
        }
    }
    

    此代码将打印所有数组及其数组值。

    【讨论】:

      【解决方案3】:

      您可以转置数组以将索引值合并到子数组,

      // fetching keys
      $keys = array_keys($arr);
      // transposing array with removing string keys to integer
      $temp = array_map(null, ...array_values($arr));
      // combining fetched keys and values by transpose
      $temp = array_map(function ($item) use ($keys) {return array_combine($keys, $item);}, $temp);
      ?>
      <ul>
      <?php foreach($temp as $v): ?>
      
          <li>
              <h3 class="<?php echo $v['icon-class']; ?>"><?php echo $v['title'];?></h3>
              <p><?php echo $v['text']; ?></p>
              <a href="<?php echo $v['link']; ?>"><?php echo $v['link-text']; ?></a>
          </li>
      
      <?php endforeach; ?>
      </ul>
      

      Demo.

      【讨论】:

        猜你喜欢
        • 2021-02-06
        • 1970-01-01
        • 2022-11-16
        • 1970-01-01
        • 1970-01-01
        • 2017-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多