为什么我的 case 在 switch 查询中并不总是被执行?

Why is my case within the switch query not always executed?

我的代码:

for ($i = 0, $anzZeilen = count($zeilen); $i < $anzZeilen; $i++) {
    switch ($zeilen[$i]['satzart']) {
        case 10: // Bundesland
            satz10($db, $zeilen[$i]);
            break;
        case 40: // Landkreis
            satz40($db, $zeilen[$i]);
            break;
        case 60: // Kommune
            satz60($db, $zeilen[$i]);
            break;
    }
}

我的测试输出(一小段摘录):

int(60)
Quelle :Ofterdingen | Rohdaten Ofterdingen | bereinigt :Ofterdingen | ohne sorbisch :Ofterdingen | ohne , :Ofterdingen

int(60)
Quelle :Rottenburg am Neckar, Stadt |

int(60)
Quelle :Tübingen, Universitätsstadt |

int(60)
Quelle :Ammerbuch | Rohdaten Ammerbuch | bereinigt :Ammerbuch | ohne sorbisch :Ammerbuch | ohne , :Ammerbuch

对应的变量是整数和60。转储($zeilen[$i]['satzart'])

而且我不知道为什么函数 satz60() 没有被执行。 (这可以在测试输出中看到,没有进一步的值被输出。)

这不相关,因为我在调用 satz60() 之前做了一个测试输出,但这是包含辅助输出的被调用函数的代码。

function satz60(PDO $db, array $zeilen)
{
    $bundeslandDestatis = (int) substr($zeilen['region'],0,2);
    $landkreisDestatis  = (int) substr($zeilen['region'],2,3);
    $gebietsForm        = (int) $zeilen['schluessel'];
    if (in_array($gebietsForm, [60,61,62,63,64])) {
        $gemeindeName = bereinigeGebietsname($zeilen['bezeichnung1']);
        echo ' Rohdaten '.$zeilen['bezeichnung1'].' | bereinigt :'.$gemeindeName.' | ohne sorbisch :';
        // Namenszusätze entfernen - sorbisch
        if (strpos($gemeindeName, ' / ') > 0 ) {
            $gemeindeName = substr($gemeindeName,0,strpos($gemeindeName, ' / ')) ;
        }
        echo $gemeindeName.' | ohne , :';
        // Namenszusätze nach dem , entfernen
        if (strpos($gemeindeName, ', ') > 0 ) {
            $gemeindeName = substr($gemeindeName,0,strpos($gemeindeName, ', ')) ;
        }
        echo $gemeindeName.'<br>';
        $query = 'SELECT * FROM `destatis_landkreis` WHERE `landkreis_destatis` = \''.$landkreisDestatis.'\' AND `bundesland_destatis`= \''.$bundeslandDestatis.'\'';
        $select = $db->query($query);
        $landkreis = $select->fetch();
        if (!$landkreis['kreisfrei']) {
            $k = 1;
            while ($k < 246) {
                $spalte = 'LKM'.$k;
                if (empty($landkreis[$spalte])) {
                    $sql2 = 'UPDATE `destatis_landkreis` SET `LKM'.$k.'`= ? WHERE `landkreis_destatis`= ? AND `bundesland_destatis`=?';
                    $statement = $db->prepare($sql2);
                    $statement->execute([$gemeindeName,$landkreisDestatis,$bundeslandDestatis]);
                    $k = 246;
                }
                $k++;
            }
        }    
    }    
}

从 $zeilen 中提取 - 原始数据

6020210131084160315002Ofterdingen                                                                                         64    000000015150000000518200000002581    72131       2886270766417290                           
6020210131084160365003Rottenburg am Neckar, Stadt                                                                         67    000000142260000004384300000021763    72108       2886270666417290                           
6020210131084160410041Tübingen, Universitätsstadt                                                                         67    000000108060000009150600000043546    72070*****  2886270766417290                           
6020210131084160480048Ammerbuch                                                                                           64    000000048040000001130200000005610    72119*****  2886270766417290                           

我的错误在行

    if (in_array($gebietsForm, [60,61,62,63,64])) {

源文件中还有更多的面积形式,文件描述中没有出现。

所以它必须是-无需进一步检查-:

    if (in_array($gebietsForm, [60,61,62,63,64,65,66,67,68,69])) {