我有一组对象采用以下形式
#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。
有没有办法实现我的目标?名称的第一部分可以是任何内容。
由于
答案 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
}