In Array suchen und löschen

Alice

Erfahrenes Mitglied
Hallo Leute. :)

Ich habe eine Frage zum suchen und löschen von einem bestimmten Code in einem Array.

In einem Array ($Ava[]) steht folgendes drin:
PHP:
Array
(
[0] => <image x="0" y="0" width="6142px" height="1299px" xlink:href="Master-Ava.png" />
[1] => <image x="679" y="0" width="561px" height="1299px" xlink:href="H.png" />
[2] => <image x="1334" y="0" width="580px" height="1299px" xlink:href="A.png" />
[3] => <image x="1989" y="0" width="570px" height="1299px" xlink:href="L.png" />
[4] => <image x="2644" y="0" width="570px" height="1299px" xlink:href="L.png" />
[5] => <image x="3299" y="0" width="480px" height="1299px" xlink:href="O.png" />
[6] => <image x="3954" y="0" width="1px" height="1299px" xlink:href="@.png" />
[7] => <image x="4954" y="0" width="750px" height="1299px" xlink:href="extra.png" />
)

Jetzt achtet bitte nicht auf die X und Y Koordinaten (stimmen nicht).

Jedenfalls möchte ich nun die Arrays wo das @-Zeichen vorkommt komplett löschen.

Das ergebnis sollte so aussehen:
PHP:
Array
(
[0] => <image x="0" y="0" width="6142px" height="1299px" xlink:href="Master-Ava.png" />
[1] => <image x="679" y="0" width="561px" height="1299px" xlink:href="H.png" />
[2] => <image x="1334" y="0" width="580px" height="1299px" xlink:href="A.png" />
[3] => <image x="1989" y="0" width="570px" height="1299px" xlink:href="L.png" />
[4] => <image x="2644" y="0" width="570px" height="1299px" xlink:href="L.png" />
[5] => <image x="3299" y="0" width="480px" height="1299px" xlink:href="O.png" />
[6] => <image x="4954" y="0" width="750px" height="1299px" xlink:href="extra.png" />
)

Kann mir jemand dabei helfen das umzusetzen?

Edit:

Ich würde es ja so machen wie hier: http://www.tutorials.de/php/235914-php-code-einem-string-suchen-und-entfernen.html#post1230209

Aber der "String" (Code) ist ja immer anders durch die X und Y Koordinaten angabe.

Am besten wäre es wenn das ganze Array (also z.B. Array [6]) gelöscht wird, wenn ein @-Zeichen vorkommt.
 
Zuletzt bearbeitet:
PHP:
$array = array(/* ... */);
$filtered = array_filter($array, function ($item)
{
  return (strstr($item, '@') === false);
});
 
Ja das "$item" eine Variable ist, ist mir schon klar aber ist die schon vor der Funktion "da" oder wird sie erst in der Funktion gebildet?
 
Soll ich mit dir noch einmal den Gültigkeitsbereich von Variablen durchgehen, die im Funktionskopf einer Funktion definiert werden? Nach über 700 Beiträgen deinerseits solltest du das langsam wissen ..
 
Ich weiss es aber leider nicht.

Ich bekomme mit dem Code einen "Parse error: syntax error, unexpected T_FUNCTION in".
 
Mh, du hattest das Problem schon einmal und es liegt daran, dass deine PHP-Version unterhalb von PHP 5.3 liegt. Ich verwende hier ein Closure, das in PHP erst mit Version 5.3 eingeführt wurde. Alternativ geht auch folgende Variante:
PHP:
function __temp_1($item)
{
  return (strstr($item, '@') === false);
}

$array = array(/* ... */);
$filtered = array_filter($array, '__temp_1');
 
Kann das "$filtered" auch vor der Funktion stehen oder muss es dahinter stehen?

Ich habe es so gemacht:
PHP:
$array = array(/* ... */);

function at_delete($item) {
   return (strstr($item, '@') === false);
}

$array = array_filter($array, 'at_delete');

Ist das so okey?
 
Zurück