я массив с 5 массивом внутри, и мне нужен цикл foreach, чтобы напечатать один из темы? - PullRequest
0 голосов
/ 05 июля 2019

у меня есть такой массив

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>

когда я использую каждый для вывода содержимого, которое он печатает в строке, сначала выводится заголовок, затем ссылки, затем класс .. мне нужно для каждого цикла, чтобы произвести этот HTML как производить выше HTML

Ответы [ 3 ]

0 голосов
/ 05 июля 2019

Вы можете транспонировать ваш массив для объединения значений индекса в подмассив,

// 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>

Демо .

0 голосов
/ 05 июля 2019

Да, вы можете сделать это, и это легко и просто.У меня есть ваш ассоциативный массив, я и я хочу напечатать каждый заголовок и его значения,

, поэтому у меня есть:

<?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>";
    }
}

Этот код напечатает всемассив и его значения массива.

0 голосов
/ 05 июля 2019
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>
<?
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...