Ankündigung

Einklappen
Keine Ankündigung bisher.

im foreach auf leere variablen reagieren

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • im foreach auf leere variablen reagieren

    Hallo,

    Ich lasse mit einer foreach Schleife einige Variablen mit Werten befüllen, wenn aber kein Wert gesetzt werden kann, bleibt die Variable bei NULL, darauf möchte ich reagieren und Sie dann mit einer Alternative befüllen.

    Habt ihr eine optimale Möglichkeit für mich in einer Schleife auf einen nicht gesetzten Wert zu reagieren?



    PHP-Code:
        <?php
        
    foreach ($feed->get_items() as $item):

            
    $stags $item->get_item_tags(  $namespace,  $tag );            
            
    $sbase $item->get_base(  $element = array() );    
            
    $sfeed $item->get_feed();            
            
    $sid $item->get_id(  $hash false );            
            
    $stitle $item->get_title();            
            
    $sdescription $item->get_description(  $description_only false );            
            
    $scontent $item->get_content(  $content_only false );            
            
    $scategory $item->get_category(  $key );            
            
    $scategories $item->get_categories();            
            
    $sauthor $item->get_author(  $key );    
            
    $sauthors $item->get_authors();        
            
    $scontributor $item->get_contributor(  $key );            
            
    $scontributors $item->get_contributors();    
            
    $scopyright $item->get_copyright();            
            
    $sdate $item->get_date(  $date_format 'j F Y, g:i a' );            
            
    $supdated $item->get_updated_date(  $date_format 'j F Y, g:i a' );            
            
    $slocaldate $item->get_local_date(  $date_format '%c' );            
            
    $sgmdate $item->get_gmdate(  $date_format 'j F Y, g:i a' );            
            
    $supdateddate $item->get_updated_gmdate(  $date_format 'j F Y, g:i a' );            
            
    $splink $item->get_permalink();            
            
    $slink $item->get_link(  $key 0,  $rel 'alternate' );            
            
    $slinks $item->get_links(  $rel 'alternate' );            
            
    $senclosure $item->get_enclosure(  $key 0,  $prefer null );            
            
    $senclosures $item->get_enclosures();
            
    $slatitude $item->get_latitude();            
            
    $slongitude $item->get_longitude();            
            
    $ssource $item->get_source();
    ?>
    <?php 
    endforeach; ?>
    Anstatt für jede Variable:
    PHP-Code:
        $sauthor $item->get_author();
            if (
    $sauthor === NULL){
            
    $sauthor "Leer";
            } 
    Ich schätze ich muss alles erstmal in ein Array packen und dann die leeren Variablen durcharbeiten oder?

  • #2
    PHP-Code:
    $sauthor $item->get_author() ?: 'Leer'
    Warum beginnen alle Variablen mit s?

    Kommentar


    • #3
      Zitat von hellbringer Beitrag anzeigen
      PHP-Code:
      $sauthor $item->get_author() ?: 'Leer'
      Warum beginnen alle Variablen mit s?
      Weil ich Sie so benannt habe.

      Kommentar


      • #4
        PHP-Code:
        $sauthor $item->get_author() ?: 'Leer'
        Das ist ähnlich dem Null-Coalesce Operator.. http://php.net/manual/de/migration70...ll-coalesce-op
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Zitat von hellbringer Beitrag anzeigen
          PHP-Code:
          $sauthor $item->get_author() ?: 'Leer'

          Zitat von hausl Beitrag anzeigen
          Das ist übrigens der Null-Coalesce Operator.. Zur Info. http://php.net/manual/de/migration70...ll-coalesce-op
          Danke! Das bringt mich schon viel weiter

          Kommentar


          • #6
            Hab es oben auch schon korr. Es ist der Ternäre Operator, aber im Grunde entspricht es dem verlinkten Null Coalesce.
            The string "()()" is not palindrom but the String "())(" is.

            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #7
              Zitat von chim Beitrag anzeigen
              Weil ich Sie so benannt habe.
              Und warum?

              Kommentar


              • #8
                Zitat von hellbringer Beitrag anzeigen

                Und warum?
                Die Daten kommen von SimplePie

                und damit ich später nicht ins Gehege komme mit:

                PHP-Code:
                foreach ($feed->get_items() as $item): 
                PHP-Code:
                        $sfeed $item->get_feed(); 

                Kommentar


                • #9
                  PHP-Code:
                  $sauthor $item->get_author() ?: 'Leer'
                  Dieser Ausdruck liefert jedoch nicht nur für NULL dann "Leer", sondern auch für eine Reihe weiterer Fälle wie 0, "0", "" etc. Ist das so gewollt?

                  Kommentar


                  • #10
                    Zitat von jspit Beitrag anzeigen
                    PHP-Code:
                    $sauthor $item->get_author() ?: 'Leer'
                    Dieser Ausdruck liefert jedoch nicht nur für NULL dann "Leer", sondern auch für eine Reihe weiterer Fälle wie 0, "0", "" etc. Ist das so gewollt?
                    Nein und war auf die schnelle als Beispiel geschrieben zur Verdeutlichung was ich wissen möchte

                    Kommentar


                    • #11
                      Hallo,

                      auch das 20 mal macht keinen Sinn:

                      PHP-Code:
                      $sdate $item->get_date(  $date_format 'j F Y, g:i a' ); 
                      Mach's doch stattdessen so:
                      PHP-Code:
                      $date_format 'j F Y, g:i a');
                      $sdate $item->get_date(  $date_format ); 
                      dafür gibts doch Variablen...
                      Außerdem ist es kein guter Stil Variablen zuzuweisen, wenn du sie direkt an der Stelle brauchst. Weiterhin würde ich dir auch als Coding-Stil die PSR-Standards empfehlen. Ich meine nur, ich würde es gleich richtig lernen wollen...

                      Ein paar mögliche alternative Lösungsmethoden zu dem was hausl schon gepostet hat:
                      Du kannst in PHP auch Objekte miteinander vergleichen, ganz praktisches Feature: http://php.net/manual/de/language.oo...comparison.php
                      Ansonsten könntest du es noch per Reflection lösen, wäre aber recht unschön: http://php.net/manual/de/reflectionc...rties-examples Einfach von dem ReflectionClass Objekt alle Properties holen mittels getProperties(), über alle Properties schleifen, in der Schleife setAccessible auf true setzen und schon kannst du alle Properties des Objekts auslesen - bequem mit nur einem if!


                      MFG

                      derwunner

                      Kommentar


                      • #12
                        Zitat von chim Beitrag anzeigen

                        Nein und war auf die schnelle als Beispiel geschrieben zur Verdeutlichung was ich wissen möchte
                        Dann nimm ??
                        PHP-Code:
                        $a = [0'0'''null];

                        foreach(
                        $a as $val) {
                            
                        var_dump$val ?? 'default' );
                        }

                        /*
                        int(0)
                        string(1) "0"
                        string(0) ""
                        string(7) "default"
                        */ 
                        Es gibt da nocgh mehr Varianten.. Siehe zB #11 etc..
                        The string "()()" is not palindrom but the String "())(" is.

                        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                        PHP.de Wissenssammlung | Kein Support per PN

                        Kommentar


                        • #13
                          Danke dir für die weiteren Links, werde ich mir ansehen.

                          Die Variablen kommen aus dieser Liste: http://dev.simplepie.org/api/class-S...html#_get_date
                          Die hatte ich jetzt erstmal straight kopiert, nach einigen durchläufen werde ich sehen was mir alle variablen bringen und werde das ganze dann anpassen.

                          Kommentar


                          • #14
                            Am Rande:
                            Was verspricht du dir von dieser Schreibweise:
                            PHP-Code:
                            $sid $item->get_id(  $hash false ); 
                            wo noch eine zusätzliche nicht benötigte Variable $hash erstellt wird und
                            PHP-Code:
                            $sid $item->get_idfalse ); 
                            völlig ausreicht?

                            Kommentar


                            • #15
                              Zitat von jspit Beitrag anzeigen
                              Am Rande:
                              Was verspricht du dir von dieser Schreibweise:
                              PHP-Code:
                              $sid $item->get_id$hash false ); 
                              wo noch eine zusätzliche nicht benötigte Variable $hash erstellt wird und
                              PHP-Code:
                              $sid $item->get_idfalse ); 
                              völlig ausreicht?
                              Siehe Antwort darüber

                              Kommentar

                              Lädt...
                              X