如何检查数组中PropertyType->Name字段是否存在指定字符串diam-mm
解决思路
不需要在遍历数组的过程中执行导入操作,先做一次全局的存在性校验,拿到最终校验结果后再决定是否执行单次导入,即可避免循环内触发操作导致重复执行的问题。
实现步骤
- 先遍历整个数组,判断是否存在
PropertyType->Name为diam-mm的项,将判断结果存储在布尔类型的标记变量中 - 遍历结束后,仅根据标记变量的结果做逻辑判断,不存在的话就执行一次导入操作,注意不要把导入逻辑写在遍历循环的内部
PHP代码示例(适配你提供的数组结构)
// 初始化存在标记 $hasDiamMm = false; // 遍历数组做校验 foreach ($yourArray as $item) { if (isset($item['PropertyType']['Name']) && $item['PropertyType']['Name'] === 'diam-mm') { $hasDiamMm = true; // 找到匹配项后直接跳出循环,不需要继续遍历剩余项 break; } } // 循环结束后统一处理导入逻辑 if (!$hasDiamMm) { // 此处写入你原本的导入操作逻辑,只会执行一次 }
优化写法
如果数组量级不大,还可以用array_column直接提取所有属性名,用in_array快速判断,代码更简洁:
$allPropNames = array_column(array_column($yourArray, 'PropertyType'), 'Name'); if (!in_array('diam-mm', $allPropNames)) { // 执行导入操作 }
内容的提问来源于stack exchange,提问作者TDwebdev
相关产品推荐
相关产品推荐

