Einzelnen Beitrag anzeigen
  #10 (permalink)  
Alt 06-01-2015, 19:32
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat:
Meintest du vielleicht array_walk()?
Nein.
Das kann Array Einträge ändern, aber nicht Datensätze mit code = 1420484634 entfernen.
Soll es auch nicht. Aber es reicht, um ein Array zu durchsuchen und den gewünschten Key (die Zeilen- oder Datensatznummer) zurückzuliefern, die benötigt wird, um anschließend die entsprechende Zeile (den Datensatz) löschen zu können.

Zitat:
Zitat von combie Beitrag anzeigen
Nachtrag:
Nur mal so als Beispiel, dass es mit array_filter und einem Closure ganz gut funktioniert....
Dass es damit irgendwie funktioniert, habe ich nicht bestritten. Aber es ist umständlich, ineffizient und irgendwie an der Aufgabenstellung vorbei.

Zitat:
PHP-Code:
<?php
error_reporting
(-1);
ini_set('display_errors'TRUE);
 

function 
drop_from_2dim_array(Array &$array,$spalte,$value)
{
             
    
$array array_filter($array,
              function (
$datensatz) use($spalte,$value)
              {
                return 
$datensatz[$spalte] !== $value;
              }
            );
}

//...
Du erzeugst also erst eine gefilterte Kopie des Original-Arrays um mit dieser anschließend das Original zu überschreiben? Warum? Falls kein passender Eintrag gefunden wird, erstellst du eine komplette Kopie, belegst also unötigerweise die doppelte Menge an Speicher, nur um array_filter() benutzen zu können. Nebenbei zerstörst du so die Key-Value-Zuordnung des Original-Arrays, selbst wenn es darin nichts zu löschen gab. Nicht dass das den OP stören würde, aber elegant|effizient ist was anderes.

Geändert von fireweasel (06-01-2015 um 19:34 Uhr) Grund: typos
Mit Zitat antworten