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


PHP - Displaying checkbox based on certain conditions

>我有一个对象集合,采用以下形式

#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 结尾,则前面的对象与其相关。 例如,Something1Test 与 Something1 相关。 第一部分将始终是相同的"Something1",克隆版本只是在末尾添加了测试。

我正在循环我的对象并显示它们的内容。 我正在尝试做的是为所有没有相关测试对象的对象显示一个复选框。 目前我有这样的东西

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

现在,从某种意义上说,这在某种程度上起作用,它为所有没有包含 Test 的 name 属性的对象显示一个复选框。 因此,对于上述数据,它显示一个复选框

Something1
NOC M2
Couldbeanything M3

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

有什么方法可以实现我所追求的吗? 名称的第一部分可以是任何东西。

谢谢

我会首先收集名称:

$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
}