PHP – Das Durchlaufen eines Objekts schlägt fehl, wenn der Wert des Elements nicht vom Typ „String' ist
P粉769045426
P粉769045426 2023-07-30 18:07:04
0
1
530
<p>Ich habe eine einfache Frage, aber egal was passiert, ich verstehe nicht, was los ist. Ich habe eine JSON-Zeichenfolge, die so aussieht: </p> <pre class="brush:php;toolbar:false;">{ „network_title“: „Netzwerk“, „class_title“: „Klasse“, „Noten“: [{ „number“: „Pre-K“, „label“: „Vorkindergarten“, „Bestellung“: 1, „id“: „34567“ }, { „Nummer“: „TK“, „label“: „Übergangskindergarten“, „Bestellung“: 2, „id“: „23456“ }, { "Nummer": "K", „label“: „Kindergarten“, „Bestellung“: 3, „id“: „12345“ }] }</pre> <p>Es wird in ein Array wie dieses konvertiert (aus einem bestimmten Grund): </p> <pre class="brush:php;toolbar:false;">array:3 [ "network_title" => "class_title" => "grades" => array:3 [ 0 => Array:4 [ „Anzahl“ => „Pre-K“ "label" => "Bestellung" => „gid“ => „aa71da69-93ab-11e9-bda9-06f442b19d06“ ] 1 => array:4 [ „Anzahl“ => „TK“ "label" => "Bestellung" => „gid“ => „d3c6754a-6298-48d0-9afa-6a19bafb8464“ ] 2 => array:4 [ „Anzahl“ => „K“ "label" => "Bestellung" => "gid" => "a815a771-9aff-4020-b7d2-0c95a05da21e" ] ] ]</pre> <p>Dann versuche ich, das Array zu durchlaufen, und wenn es ein Element findet, dessen Typ kein String ist (wie das order-Element), wird ein ungültiges Argument für den Fehler „foreach()“ angegeben. Die Fehlermeldung besagt, dass die foreach()-Zeile problematisch ist. Hier ist ein Codebeispiel: </p> <pre class="brush:php;toolbar:false;">foreach ($arrTree as $k => $v) { if (is_string($v)) { //Mach hier etwas } }</pre> <p>Ich bin mir sicher, dass mir hier etwas Grundlegendes fehlt, aber ich bin es leid, nach Problemen zu suchen. Danke. </p>
P粉769045426
P粉769045426

Antworte allen(1)
P粉615886660

问题在于 $arrTree 是一个多维数组。

您的代码中的 foreach 循环只遍历了数组的第一层,而没有遍历嵌套的数组(如 "grades")。当它遇到 "grades" 时,$v 的值不是字符串,而是一个数组,这就是为什么 is_string($v) 检查失败的原因。

您需要添加一个嵌套的 foreach 循环来处理这个结构。

以下是一个示例,展示了如何实现这一点:

foreach ($arrTree as $k => $v)
{ 
    if (is_string($v)) 
    {
        //Do something here
    }
    else if (is_array($v))
    {
        foreach($v as $key => $value)
        {
            if(is_string($value))
            {
                //Do something here
            }
            else if(is_array($value))
            {
                foreach($value as $innerKey => $innerValue)
                {
                    if(is_string($innerValue))
                    {
                        //Do something here
                    }
                }
            }
        }
    }
} 
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage