Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Brauche Hilfe bei Array Zusammenführung

    bkabel

    • Schreiberling
    • Beiträge: 341
    • Geschlecht:
    Brauche Hilfe bei Array Zusammenführung
    am: 25. Mai 2011, 21:06:48
    Hallo liebe modified eCommerce Shopsoftware-Community,

    ich habe mich nun auch mal dazu entschlossen einen Thread aufzumachen. ;-)

    Und zwar geht es um folgendes Problem:
    Ich möchte aus einem HTML-String verschiedene Image-Links auslesen und (für das MODUL: ICEcat Datenblätter einbinden) dann weiter verarbeiten.
    Die Links bestehen aus einem Thumbpic und einem dazu passenden Highpic.

    Folgende Abfrage habe ich aufgebaut:

    Code: PHP  [Auswählen]
     // $data = HTML-String
     // Image-Links sind hier nur ein Beispiel und können in der Menge variieren!

      $thumbs     = preg_match_all('#(http://images.icecat.biz/img/gallery_thumbs/(.*?).jpg)#', $data, $imagegalerythumb);
      $highthumbs = preg_match_all('#(http://images.icecat.biz/img/gallery/(.*?).jpg)#', $data, $imagegalery);
      Ausgabe $imagegalerythumb[1]

    Array
    (
        [0] => http://images.icecat.biz/img/gallery_thumbs/1422332_5149.jpg
        [1] => http://images.icecat.biz/img/gallery_thumbs/1422332_8534.jpg
        [2] => http://images.icecat.biz/img/gallery_thumbs/1422332_2941.jpg
    )
      Ausgabe $imagegalery[1]

    Array
    (
        [0] => http://images.icecat.biz/img/gallery/1422332_4333.jpg
        [3] => http://images.icecat.biz/img/gallery/1422332_8770.jpg
        [6] => http://images.icecat.biz/img/gallery/1422332_9274.jpg
    )
      // Die keys sind wegen doppelten Einträgen und der Funktion "array_unique()" automatisch so gestaltet!
    Code: PHP  [Auswählen]
      if ($thumbs != 0) {
        foreach (array_unique($imagegalerythumb[1]) as $v) {
          $tmp = array($v);
        }
        foreach (array_unique($imagegalery[1]) as $y) {
          $tmp1 = array($y);
        }
        $PicValue[] = array_merge($tmp, $tmp1);
      }

      echo "</ pre>";
      print_r($PicValue);
      echo "</ pre>";
     
     Die Ausgabe sieht aber leider so aus!

    Array
    (
        [0] => Array
            (
                [0] => http://images.icecat.biz/img/gallery_thumbs/1422332_2941.jpg
                [1] => http://images.icecat.biz/img/gallery/1422332_9274.jpg
            )

    )
    Array1 und Array2 sollen zu neuen Array´s werden, aber mit jeweils gleichem $key.

    Im Prinzip in etwa so:

    Array
    (
        [0] => Array
            (
                [0] => http://images.icecat.biz/img/gallery_thumbs/1422332_5149.jpg
                [1] => http://images.icecat.biz/img/gallery/1422332_4333.jpg
            )
        [1] => Array
            (
                [0] => http://images.icecat.biz/img/gallery_thumbs/1422332_8534.jpg
                [1] => http://images.icecat.biz/img/gallery/1422332_8770.jpg
            )
        [1] => Array
            (
                [0] => http://images.icecat.biz/img/gallery_thumbs/1422332_2941.jpg
                [1] => http://images.icecat.biz/img/gallery/1422332_9274.jpg
            )

    )
    An folgender Abfrage kann man erkennen, wie das Ganze aussehen soll!

    Code: PHP  [Auswählen]
      $xml = new SimpleXMLElement($data);
      // Create arrays of item elements/attributes from the XML feed
      $productGallery = $xml->xpath("//ProductPicture");
      if ($productGallery == null) { return ""; }
        foreach ($productGallery as $item) {
          $PicValue = $item->attributes();
          if ($PicValue['Pic'] != null) {
            $thumbMorePics[] = array ("ThumbPic" => $this->cacheICEcatImg("ICEcat_cache/ICEcatMoreImagesLow", $PicValue['ThumbPic']),
                                      "Pic" => $this->cacheICEcatImg("ICEcat_cache/ICEcatMoreImagesHigh", $PicValue['Pic']));
          }
        }
        return $thumbMorePics;
    Jetzt die alles entscheidende Frage:
    Könnt ihr mir helfen, die oben genannte Abfrage so in ein Array zu packen, dass ich es so verwenden kann wie hier unten im Beispiel?
    Ich versuche jetzt schon seit drei Tagen herum und bin mit meinem Latein am Ende!

    Gruß Björn



    Linkback: https://www.modified-shop.org/forum/index.php?topic=13171.0

    h-h-h

    • modified Team
    • Beiträge: 4.562
    Brauche Hilfe bei Array Zusammenführung
    Antwort #1 am: 25. Mai 2011, 21:50:11
    Hallo Björn,
    versuche es bitte mal mit folgendem Abschnitt.

    Code: PHP  [Auswählen]
      $img_small = array_unique($imagegalerythumb[1]);
      $img_large = array_unique($imagegalery[1]);

      $img_small_keys = array_keys($img_small);
      $img_large_keys = array_keys($img_large);

      for ($i = 0; $i <count($img_small); $i++) {
        $PicValue[$i][] = $img_small[$img_small_keys[$i]];
        $PicValue[$i][] = $img_large[$img_large_keys[$i]];
      }
    Gruß

    h-h-h

    bkabel

    • Schreiberling
    • Beiträge: 341
    • Geschlecht:
    Brauche Hilfe bei Array Zusammenführung
    Antwort #2 am: 25. Mai 2011, 22:23:52
    Danke h-h-h,  :thx:

    Das sieht ja mal richtig gut aus!  :hug:  Du bist ein "Schatz"!  :B

    Die Lösung funktioniert genau so wie sie soll! Jetzt kann ich hoffentlich weiter basteln!  ;)
    Ausgabe von $PicValue:

    Array
    (
        [0] => Array
            (
                [0] => http://images.icecat.biz/img/gallery_thumbs/1422332_5149.jpg
                [1] => http://images.icecat.biz/img/gallery/1422332_4333.jpg
            )

        [1] => Array
            (
                [0] => http://images.icecat.biz/img/gallery_thumbs/1422332_8534.jpg
                [1] => http://images.icecat.biz/img/gallery/1422332_8770.jpg
            )

        [2] => Array
            (
                [0] => http://images.icecat.biz/img/gallery_thumbs/1422332_2941.jpg
                [1] => http://images.icecat.biz/img/gallery/1422332_9274.jpg
            )

    )
    Gruß Björn

    9 Antworten
    4463 Aufrufe
    28. Juli 2012, 22:05:38 von TeeBlume
    10 Antworten
    4657 Aufrufe
    26. Mai 2015, 17:56:26 von web0null