PHP - 根据特定条件显示复选框

时间:2016-03-02 13:05:58

标签: php object

我有一组对象采用以下形式

#attributes: array:8 [▼
    "name" => "Something1"
    "value" => "Some Data"
]

#attributes: array:8 [▼
    "name" => "Something1Test"
    "value" => "Some Data"
]

#attributes: array:8 [▼
    "name" => "NOC M2"
    "value" => "Some Data"
]

#attributes: array:8 [▼
    "name" => "Couldbeanything M3"
    "value" => "Some Data"
]

#attributes: array:8 [▼
    "name" => "Couldbeanything M3Test"
    "value" => "Some Data"
]

如果name属性以Test结尾,则前面的Object与之相关。所以例如Something1Test与Something1有关。第一部分将始终是相同的“Something1”,克隆版本只是将Test添加到最后。

我正在循环我的对象并显示它们的内容。我要做的是显示没有相关测试对象的所有对象的复选框。目前我有类似的东西

<?php if(strpos($data->name, 'Test') === false) { ?>
    <div class="col-md-4">
        //Display a checkbox
    </div>
<?php } ?>

现在这有点起作用,它显示了一个没有名称属性的所有对象的复选框,其中包含Test。因此,对于上述数据,它显示了

的复选框
Something1
NOC M2
Couldbeanything M3

我遇到的问题是Something1和Couldbeanything有一个相关的测试对象,所以这两个不应该有一个复选框。根据上述数据,唯一应该有复选框的是NOC M2,因为没有NOC M2Test。

有没有办法实现我的目标?名称的第一部分可以是任何内容。

由于

1 个答案:

答案 0 :(得分:1)

我先收集名字:

$names = array_column($objects, 'name');

上面假设一个嵌套的数组结构;你可能需要做这样的事情:

$names = array();
foreach ($objects as $data) {
    $names[] = $data->name;
}

然后我会执行以下检查:

// Must not end in Test and must not have a corresponding Test object
if (substr($data->name, -4) != 'Test' && !in_array($data->name . 'Test', $names)) {
    // do my output here
}