Table des matières
xxx2
Maison développement back-end tutoriel php Exception Résultat de la collection récursive QueryList: Pourquoi les exemples de documents sont-ils incompatibles avec le résultat réel?

Exception Résultat de la collection récursive QueryList: Pourquoi les exemples de documents sont-ils incompatibles avec le résultat réel?

Apr 01, 2025 am 08:54 AM
css css选择器

Exception Résultat de la collection récursive QueryList: Pourquoi les exemples de documents sont-ils incompatibles avec le résultat réel?

Collection récursive de la question: analyse des différences entre les résultats attendus et les résultats et solutions réels

Lors de l'utilisation de QueryList pour les données à plusieurs niveaux rampant, les développeurs rencontrent souvent des situations où les exemples de documents sont incompatibles avec les résultats en cours d'exécution. Cet article utilisera un cas pour analyser profondément les causes profondes du problème et fournir des solutions efficaces.

Description du problème:

L'objectif est d'extraire les informations de titre et de répertorier la structure HTML. La structure HTML est la suivante:

<div id="demo">
    <ul>
<li>
          <h3 id="xxx">xxx</h3>
          <div class="list">
            <div class="item">point1</div>
            <div class="item">item2</div>
          </div>
        </li>
         <li>
          <h3 id="xxx">xxx2</h3>
          <div class="list">
            <div class="item">point12</div>
            <div class="item">point22</div>
          </div>
        </li>
    </ul>
</div>
Copier après la connexion

Utilisez le code de la liste des requêtes pour l'extraction des données:

 // ... (l'extrait de code est manquant, ne peut pas être entièrement analysé) ...
Copier après la connexion

Le résultat attendu est d'extraire chacun<li> Suivant<h3></h3> Contenu de titre et item . Mais le résultat réel est la fusion du contenu item :

 <code>Array ( [0] => Array ( [title] => xxx [list] => Array ( [item] => item1item2 ) ) [1] => Array ( [title] => xxx2 [list] => Array ( [item] => item12item22 ) ) )</code>
Copier après la connexion

Analyse des problèmes:

Le problème est que l'objet interne QueryList hérite range de l'objet extérieur QueryList. range('') ne réinitialise pas vraiment le sélecteur, ce qui fait que l'utilisation du sélecteur de range('#demo li') , entraînant une fusion du contenu item . Cela peut être dû à un mécanisme interne de requête ou à d'autres problèmes dans le code. range('') ne réinitialise pas toujours correctement la plage et nécessite une analyse plus approfondie.

Solution:

Pour résoudre ce problème, il est nécessaire de s'assurer que l'objet interne QueryList fonctionne indépendamment de l'objet extérieur. Simple range('') peut ne pas fonctionner, nous avons besoin d'une méthode plus fiable. Les solutions suivantes peuvent être essayées:

    <li> Utilisez des sélecteurs plus précis: Évitez d'utiliser range() , utilisez des sélecteurs CSS plus précis directement dans rules , par exemple:
 $ data = QueryList :: html ($ html)
    -> règles ([
        'title' => ['h3', 'text'],
        'list' => ['.list .item', 'text'] // sélectionnez tous les éléments .tem directement]))
    -> Range ('# Demo Li')
    -> query (); // Notez que Query () est utilisé directement ici, et le vidage récursif ($ data) de queryData () n'est plus nécessaire;
Copier après la connexion

Cette méthode extrait directement le contenu texte de tous les éléments .item , évitant les problèmes causés par la récursivité.

    <li> Traitement de boucle manuelle: abandonnez la fonction récursive de la liste de requête et du traitement de boucle manuellement<li> élément:
 $ lis = querylist :: html ($ html) -> find ('# démo li');
$ data = [];
foreach ($ lis comme $ li) {
    $ item = [];
    $ item ['title'] = queryList :: html ($ li) -> find ('h3') -> text ();
    $ items = queryList :: html ($ li) -> find ('. list .item') -> map (function ($ item) {return $ item-> text ();}) -> all ();
    $ item ['list'] = $ items;
    $ data [] = $ item;
}
Dump ($ data);
Copier après la connexion

Cette méthode est plus claire et plus facile à comprendre et à déboguer.

    <li> Examen approfondi du code source et de la documentation de la liste de listes: Si la méthode ci-dessus n'est pas valide, vous devez effectuer des recherches approfondies sur le code source et la documentation de la question de la question, découvrez le comportement spécifique et les problèmes potentiels de range() et essayez d'autres fonctions fournies par QueryList pour résoudre ce problème. Vous devrez peut-être vérifier la version de la version QueryList et la compatibilité de la version PHP.

Quelle option à choisir dépend des exigences spécifiques et de la familiarité avec QueryList. Il est recommandé de donner la priorité à la méthode 1, car elle est simple et efficace. Si la méthode 1 ne peut pas répondre aux exigences, considérez à nouveau la méthode 2. La méthode 3 est le dernier choix et nécessite des connaissances en programmation plus approfondies. N'oubliez pas de toujours vérifier la documentation officielle et l'exemple de code de la question pour vous assurer que ses fonctionnalités sont utilisées correctement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Grow A Garden - Guide de mutation complet
3 Il y a quelques semaines By DDD
<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Système de fusion, expliqué
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1666
14
Tutoriel PHP
1273
29
Tutoriel C#
1252
24
Comment utiliser Bootstrap en Vue Comment utiliser Bootstrap en Vue Apr 07, 2025 pm 11:33 PM

L'utilisation de bootstrap dans vue.js est divisée en cinq étapes: installer bootstrap. Importer un bootstrap dans main.js. Utilisez le composant bootstrap directement dans le modèle. Facultatif: style personnalisé. Facultatif: utilisez des plug-ins.

Comprendre HTML, CSS et JavaScript: un guide pour débutant Comprendre HTML, CSS et JavaScript: un guide pour débutant Apr 12, 2025 am 12:02 AM

WebDevelopmentReliesOnHTML, CSS, etjavascript: 1) HTMLSTRUCTURESCONTENT, 2) CSSSTYLESIT, et3) JavascriptAdddsInterActivity, Forming TheasisofmodernweBEBExperiences.

Les rôles de HTML, CSS et JavaScript: responsabilités de base Les rôles de HTML, CSS et JavaScript: responsabilités de base Apr 08, 2025 pm 07:05 PM

HTML définit la structure Web, CSS est responsable du style et de la mise en page, et JavaScript donne une interaction dynamique. Les trois exercent leurs fonctions dans le développement Web et construisent conjointement un site Web coloré.

Comment insérer des photos sur bootstrap Comment insérer des photos sur bootstrap Apr 07, 2025 pm 03:30 PM

Il existe plusieurs façons d'insérer des images dans Bootstrap: insérer directement les images, en utilisant la balise HTML IMG. Avec le composant d'image bootstrap, vous pouvez fournir des images réactives et plus de styles. Définissez la taille de l'image, utilisez la classe IMG-FLUID pour rendre l'image adaptable. Réglez la bordure en utilisant la classe IMG-border. Réglez les coins arrondis et utilisez la classe Roundée IMG. Réglez l'ombre, utilisez la classe Shadow. Redimensionner et positionner l'image, en utilisant le style CSS. À l'aide de l'image d'arrière-plan, utilisez la propriété CSS d'image d'arrière-plan.

Comment écrire des lignes fendues sur bootstrap Comment écrire des lignes fendues sur bootstrap Apr 07, 2025 pm 03:12 PM

Il existe deux façons de créer une ligne divisée bootstrap: en utilisant la balise, qui crée une ligne divisée horizontale. Utilisez la propriété CSS Border pour créer des lignes de fractionnement de style personnalisées.

Comment configurer le cadre de bootstrap Comment configurer le cadre de bootstrap Apr 07, 2025 pm 03:27 PM

Pour configurer le framework Bootstrap, vous devez suivre ces étapes: 1. Référez le fichier bootstrap via CDN; 2. Téléchargez et hébergez le fichier sur votre propre serveur; 3. Incluez le fichier bootstrap dans HTML; 4. Compiler les sass / moins au besoin; 5. Importer un fichier personnalisé (facultatif). Une fois la configuration terminée, vous pouvez utiliser les systèmes, composants et styles de grille de Bootstrap pour créer des sites Web et des applications réactifs.

Comment redimensionner le bootstrap Comment redimensionner le bootstrap Apr 07, 2025 pm 03:18 PM

Pour ajuster la taille des éléments dans Bootstrap, vous pouvez utiliser la classe de dimension, qui comprend: ajuster la largeur: .col-, .w-, .mw-ajustement Hauteur: .h-, .min-h-, .max-h-

Comment utiliser le bouton bootstrap Comment utiliser le bouton bootstrap Apr 07, 2025 pm 03:09 PM

Comment utiliser le bouton bootstrap? Introduisez Bootstrap CSS pour créer des éléments de bouton et ajoutez la classe de bouton bootstrap pour ajouter du texte du bouton

See all articles