【问题标题】:How do I display an array object with certain conditions in php?如何在php中显示具有某些条件的数组对象?
【发布时间】:2021-01-02 08:44:42
【问题描述】:

我想在 html 中进行如下选择显示:

<div name="option_a">
    <p>result for option_a</p>
    <img src="option_a_image"></img>
</div>
<div name="option_b">
    <p>result for option_b</p>
    <img src="option_b_image"></img>
</div>
<div name="option_c">
    <p>result for option_c</p>
    <img src="option_c_image"></img>
</div>
<div name="option_d">
    <p>result for option_d</p>
    <img src="option_d_image"></img>
</div>

使用这个数组:

Array
(
    [0] => stdClass Object
        (
            [option_a] => its option a
            [option_a_image] => its an image for option a
            [option_b] => its option b
            [option_b_image] => its an image for option b
            [option_c] => its option c
            [option_c_image] => its an image for option c
            [option_d] => its option d
            [option_d_image] => its an image for option d
    )
    [1] => stdClass Object
        (
            [option_a] => its option a
            [option_a_image] => its an image for option a
            [option_b] => its option b
            [option_b_image] => its an image for option b
            [option_c] => its option c
            [option_c_image] => its an image for option c
            [option_d] => its option d
            [option_d_image] => its an image for option d
    )
    [2] => stdClass Object
        (
            [option_a] => its option a
            [option_a_image] => its an image for option a
            [option_b] => its option b
            [option_b_image] => its an image for option b
            [option_c] => its option c
            [option_c_image] => its an image for option c
            [option_d] => its option d
            [option_d_image] => its an image for option d
    )
)

但我想使用循环使其更简洁。我尝试了以下方法:

<?php foreach($array[0] as $type=>$value ){
    if(strpos($type,'option_') !== false){ ?>           
    <div class="card mb-3" style="width: 98%; margin: auto">
    <div class="card-body">
                                            
    <label ><input type='radio' name='r1' tabindex='5'> <span><?php echo $value ?></span></label> <br>        
                                            
    </div>
    </div>
<?php } } ?>

但是像这样的循环不能产生我想要创建的视图。 那么如何让循环形成我想要产生的结果呢?

谢谢

【问题讨论】:

    标签: php html loops


    【解决方案1】:

    它应该适合你:

    $array[0] = [
        "option_a"       => "its option a",
        "option_a_image" => "its an image for option a",
        "option_b"       => "its option b",
        "option_b_image" => "its an image for option b",
        "option_c"       => "its option c",
        "option_c_image" => "its an image for option c",
        "option_d"       => "its option d",
        "option_d_image" => "its an image for option d"
    ];
    
    $thisElementIsOption = true;
    $option = [];
    
    foreach($array[0] as $type => $value) {
        if(strpos($type, 'option_') !== false) {
            if ($thisElementIsOption) {
                $option['name'] = $type;
            } else {
                $option['image'] = $type;
    
                $name = $option['name'];
                $image = $option['image'];
                echo "<div name='$name'><p>result for $name</p><img src='$image'></img></div>".PHP_EOL;
    
                $option = [];
            }
    
            $thisElementIsOption = !$thisElementIsOption;
        }
    }
    

    输出

    <div name='option_a'><p>result for option_a</p><img src='option_a_image'></img></div>
    <div name='option_b'><p>result for option_b</p><img src='option_b_image'></img></div>
    <div name='option_c'><p>result for option_c</p><img src='option_c_image'></img></div>
    <div name='option_d'><p>result for option_d</p><img src='option_d_image'></img></div>
    

    在这个解决方案中,我使用 $thisElementIsOption 作为标志变量并创建一个数组 $option 并让 html 输出进行交互

    【讨论】:

    • $thisElementIsOption 有什么用 = !$thisElementIsOption;在 if else 之后?
    • 当我想制作这样的 html &lt;div name='option_a'&gt;&lt;p&gt;result for option_a&lt;/p&gt;&lt;img src='option_a_image'&gt;&lt;/img&gt;&lt;/div&gt; 我需要迭代两行,因为我需要选项数据和选项图像数据,所以我使用这个标志变量来执行此操作
    • 我明白了。非常感谢。它非常有用
    猜你喜欢
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 2021-11-18
    • 2021-04-24
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多