Arrays
DerLernende
- php
0 Ashura
Wieder mal guten tag @ all,
Ich habe folgendes Problem:
Ich möchte ein Assoziatives Array auslesen und gleichzeitig
vergleichen und ersetzten aber ich weiss nicht genau wie ich das anstellen soll...hier ein kleines beispiel was ich meine:
$pc=array("XP2200+"=>"1800MHZ");
Nun möchte ich einen Text einlesen und überprüfen ob dort "XP2200+" und wenn ja der text durch "1800MHZ" ersetzt wird.
Kann mir da einer Weiterhelfen? Ich bedanke mich schonmal im vorraus..
Wünsche @ all einen Schönen Abend noch!
Hallo DerLernende.
$pc=array("XP2200+"=>"1800MHZ");
Nun möchte ich einen Text einlesen und überprüfen ob dort "XP2200+" und wenn ja der text durch "1800MHZ" ersetzt wird.
Dies geht recht einfach mit Hilfe von str_replace, array_keys und array_values.
Einen schönen Dienstag noch.
Gruß, Ashura
Hallo Ashura
str_replace, array_keys und array_values.
Danke jetzt kann ich es umsetzten!
Einen schönen Dienstag noch.
Danke dir auch!
echo $begrüßung;
$pc=array("XP2200+"=>"1800MHZ");
Nun möchte ich einen Text einlesen und überprüfen ob dort "XP2200+" und wenn ja der text durch "1800MHZ" ersetzt wird.Dies geht recht einfach mit Hilfe von str_replace, array_keys und array_values.
Das nennst du recht einfach? Ich möchte nicht deine komplizierten Lösungen sehen :-)
strtr() (zweite Aufrufvariante) kann man das $pc-Array direkt übergeben und muss es nicht erst in seine Bestandteile zerlegen.
echo "$verabschiedung $name";
Hallo dedlfix,
strtr() (zweite Aufrufvariante) kann man das $pc-Array direkt übergeben und muss es nicht erst in seine Bestandteile zerlegen.
Seit wann kann man PHP Funktionen überladen?
Gruß,
Severin
'Nabend Severin.
Seit wann kann man PHP Funktionen überladen?
Wenn du das im Sinne der zweiten Aufrufvariante von strtr() meinst, schon eine ganze Weile. Da PHP ja eine "loosely-typed language" ist, kannst du als Funktionsparameter ja übergeben, was du willst [1], um ggf. anschließend in der Funktion eine Typenunterscheidung zu machen. Als richtiges Überladen würde ich das aber nicht bezeichnen.
Methoden und Objekteigenschaften kannst du aber überladen.
[1] Es sei denn, du benutzt Type Hinting (seit PHP 5).
echo $begrüßung;
Vorsicht! Unter dem Begriff Overload versteht man in anderen Sprachen im Prinzip etwas anderes. Unter PHP wird damit eine Art und Weise bezeichnet, innerhalb einer Klasse den Zugriff auf nicht vorhandene Eigenschaften und Methoden an (im Wesentlichen drei) spezielle (magische) Methoden weiterzureichen, die dann irgendetwas beliebiges machen können.
PHP4 bietet die von dir verlinkte Erweiterung an, PHP5 hat das "Overloading" anders als die PHP4-Erweiterung gelöst und gleich eingebaut.
[1] Es sei denn, du benutzt Type Hinting (seit PHP 5).
Auch das funktioniert (im Gegensatz zu anderen Sprachen) nur eingeschränkt. Als Typen können nur Klassennamen und seit PHP 5.1 auch "array" verwendet werden. Für skalare Werte (string, integer) kann das Type Hinting nicht verwendet werden.
echo "$verabschiedung $name";
echo $begrüßung;
strtr() (zweite Aufrufvariante) [...]
Seit wann kann man PHP Funktionen überladen?
Bis jetzt kann man das nicht (ich denke auch nicht, dass das kommen wird), man kann es aber simulieren.
Das Handbuch führt beide Aufrufvarianten so an:
string strtr ( string str, string from, string to )
string strtr ( string str, array replace_pairs )
Selbst implementiert sieht das beispielsweise so aus:
/**
* Translate certain characters
*
* @param string $str
* @param string/array $from
* @param string $to (optional)
* @return string
*/
function strtr($str, $from, $to = null) {
if (is_array($from))
// replace_pairs-Variante
elseif (is_string($from) and is_string($to))
// from-to-Variante
else
// ungültiger Aufruf
}
In der replace_pairs-Variante wird der als optional deklarierte Parameter $to ignoriert. Da er nicht angegeben werden muss, weil "= null" ihn optional macht, kann man die Funktion auch mit nur zwei Parametern aufrufen. Wenn man will, kann man noch $from nach $replace_pairs umkopieren, doch das ist im Prinzip unnötig. Die Bedeutung von $from kann auch durch einen Kommentar geklärt werden.
echo "$verabschiedung $name";