Ankündigung

Einklappen
Keine Ankündigung bisher.

Mehrdimensionale Array Fehler (mit array_multisort)

Einklappen

Neue Werbung 2019

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

  • Mehrdimensionale Array Fehler (mit array_multisort)

    Hallo zusammen,

    ich habe eine mehrdimensionale Array und bekomme beim Auslesen den Fehler:
    Warning: Only the first byte will be assigned to the string offset in ....... (1. Zeile $Wert['idli'])

    var_dump($ArrayIdLiPlus)
    array(1) { [0]=> array(4) { ["artnr"]=> string(7) "5048674" ["idli"]=> string(3) "5-2" ["menge"]=> string(2) "10" ["wanr"]=> string(7) "9721321" } }

    PHP-Code:
    // Sotriern nach artnr
    $ArtNrLiPlus array_column($ArrayIdLiPlus'artnr');
    array_multisort($ArtNrLiPlusSORT_ASC$ArrayIdLiPlus);

    // auslesen
    foreach($ArrayIdLiPlus as $Row => $Wert) {
         
    $IdLiPlus[$Row] = $Wert['idli'];
         
    $ArtNrPlus[$Row] = $Wert['artnr'];
         
    $MengePlus[$Row] = $Wert['menge'];
         
    $WaNrPlus[$Row] = $Wert['wanr'];

         
    $IdLiPlus2 $IdLiPlus[$Row];
         
    $ArtNrPlus2 $ArtNrPlus[$Row];
         
    $MengePlus2 $MengePlus[$Row];
         
    $WaNrPlus2 $WaNrPlus[$Row];

          echo 
    '....';

    Steh gerade auf dem Schlauch.

    Kann mir jemand sagen, was da falsch ist?

    Gruß
    Falke07


  • #2
    Der gezeigte Code verursacht nicht so einen Fehler:

    PHP-Code:
    error_reporting(-1);

    $ArrayIdLiPlus = [
        [
            
    "artnr" => "5048674",
            
    "idli" => "5-2",
            
    "menge" => "10",
            
    "wanr" => "9721321"
        
    ]
    ];

    // Sotriern nach artnr
    $ArtNrLiPlus array_column($ArrayIdLiPlus'artnr');
    array_multisort($ArtNrLiPlusSORT_ASC$ArrayIdLiPlus);

    // auslesen
    foreach($ArrayIdLiPlus as $Row => $Wert) {
        
    $IdLiPlus[$Row] = $Wert['idli'];
        
    $ArtNrPlus[$Row] = $Wert['artnr'];
        
    $MengePlus[$Row] = $Wert['menge'];
        
    $WaNrPlus[$Row] = $Wert['wanr'];

        
    $IdLiPlus2 $IdLiPlus[$Row];
        
    $ArtNrPlus2 $ArtNrPlus[$Row];
        
    $MengePlus2 $MengePlus[$Row];
        
    $WaNrPlus2 $WaNrPlus[$Row];

        echo 
    '....';

    Ausgabe:
    Code:
    ....
    (ohne Fehler)

    Kommentar


    • #3
      Zitat von Falke07 Beitrag anzeigen
      Kann mir jemand sagen, was da falsch ist?
      In PHP wird [] für den Zugriff auf Array Element verwendet, aber auch um auf ein Zeichen in einem String zuzugreifen. In dem Fall ist $IdLiPlus ein String. Wo der herkommt ist aus dem geposteten Code nicht ersichtlich. Entweder hast irgendwo im Code davor schon $IdLiPlus verwendet, oder überschreibst es in der Schleife mit einem String.

      Bei ersteren kannst du das fixen, indem du vor der Schleife explizit ein array definierst machst.

      PHP-Code:
      $IdLiPlus = [];

      foreach(...) {


      Es ist aber auch nicht so das gelbe vom Ei Variablen doppelt zu verwenden. Wenn "$IdLiPlus" weiter oben im Script eine einzelne Id ist, sollte das weiter unten nicht zu einem Array mit Ids werden. Das führt nur zu unnötiger Verwirrung...

      Kommentar


      • #4
        Hallo zusammen,

        sorry, das ich mich erst jetzt wieder melde.

        erc hatte den richtigen Richer

        Der Code ist sehr lange und in Blöcken aufgeteilt, welche nacheinander abgearbeitet werden. Jeder Block ist eigentlich Stand alone, weshalb ich diesen hier nicht gepostet habe (insg. fast 1600 Zeilen).

        Und tatsächlich hatte ich $IdLiPlus in einem oberen Block als (int) bereits schon mal verwendet.

        Thx für die Hilfestellung.
        Gruß
        Falke07

        Kommentar

        Lädt...
        X