Array Felder Vergleichen
Michael
- php
0 Andavos0 Michael0 Andavos
0 Andreas Korthaus
Hallo,
ich habe hier ein kleines Problem mir fällt nur dazu keine Lösung ein wie es gehen könnte?
Also ich habe ein Array was so aussieht:
Array
(
[0] => 1
[1] => 1
[2] => 1
[3] => 1
[4] => 1
[5] => 2
[6] => 2
[7] => 2
[8] => 2
[9] => 2
)
Nun soll das Array ausgeben werden nur doppelte Ausgaben mit gleichen Wert darf es nicht geben. Wie vergleiche ich den Inhalt des Feldes 0 mit 1, 2 3, 4, 5 ... ?
Also Ausgabe möchte ich nicht
1
1
1
1
1
2
2
2
2
2
stehen haben
sondern nur
1
2
Aber wie mache ich das? vielleicht gibt es da ja doch eine passenden funktion die ich noch nicht entdeckt habe?
Hallo,
du gibst das doch bestimmt mit einer schleife aus, oder?
Dann mach es so
$testarray = array();
schleife(...)
{
if(!in_array($wert_des_anderen_array, $testarray)
{
$wert_adden = array_push($testarray, $wert_des_anderen_array);
//Ausgabe
}
}
Also du überprüfst ob in dem neuem Array der Wert steht.
Wenn nicht, gibst du den wert aus, und pusht den Wert in das Array
MFG
Andavos
$testarray = array();
schleife(...)
{if(!in_array($wert_des_anderen_array, $testarray)
{
$wert_adden = array_push($testarray, $wert_des_anderen_array);
//Ausgabe
}}
So sähe es bei mir aus:
for ($i=0; $i <$anzahl; $i++)
{
$testarray = $array_kompakt[$i][2];
$wert_des_anderen_array = $array_kompakt[$y][2];
if(!in_array($wert_des_anderen_array, $testarray))
{
$wert_adden = array_push($testarray, $wert_des_anderen_array);
echo $wert_adden; //Ausgabe
}
//print_r($array_kompakt[$i][2]);
//echo "<br>";
}
Nur funktioniert das bei mir nicht weil ich nicht 2 verschiedene Arrays vergleiche sondern die Werte innerhalb eines Arrays wenn was gleich ist darf es nur 1 mal ausgegeben werden. Ich denke Deine Lösung passt zu meinem Problem nicht?
Hallo,
$wert_des_anderen_array = array("Text1", "Text2", "Text1", "Text2");
$testarray = array(); //Leeres Array
$anzahl = count($wert_des_anderen_array);
for ($i=0; $i <$anzahl; $i++)
{
if(!in_array($wert_des_anderen_array[$i], $testarray))
{
array_push($testarray, $wert_des_anderen_array[$i]);
echo $wert_des_anderen_array[$i]; //Ausgabe
}
}
Ausgabe:
Text1 Text2
MFG
Andavos
Also bei mir ist der letzte Wert in der Ausgabe doppelt? Liegt das evtl daran weil ich ein 2 dimensionales array habe?
$wert_des_anderen_array = array();
$wert_des_anderen_array[] = $array_kompakt[$i][2];
$testarray = array(); //Leeres Array
for ($i=0; $i <$anzahl; $i++)
{
$wert_des_anderen_array[$i] = $array_kompakt[$i][2];
if(!in_array($wert_des_anderen_array[$i], $testarray)) // Ist der Wert im testarray schon vorhanden?
{
array_push($testarray, $wert_des_anderen_array[$i]);
echo $wert_des_anderen_array[$i]; //Ausgabe
}
}
Ausgabe:
1 2 2
Dann habe ich array_unique gearbeitet aber da kommt als Fehler "Wrong datatype in array_unique()" ?
//$result = array();
for ($i=0; $i <$anzahl; $i++)
{
$result = array_unique($array_kompakt[$i][2]);
}
print_r($result);
Hi!
Dann habe ich array_unique gearbeitet aber da kommt als Fehler "Wrong datatype in array_unique()" ?
//$result = array();
btw, das ist durchaus eine gute Idee.
for ($i=0; $i <$anzahl; $i++)
{
$result = array_unique($array_kompakt[$i][2]);}
print_r($result);
Mit ist noch nicht wirklich klar was Du vorhast, oder wie Dein "$array_kompakt[$i][2]" aussiehst, und warum Du das überhaupt in eien Schleife packst(bedenke dass Du bei jedem durchlauf $result überschreibst), das was da oben steht ist exakt identisch zu:
$result = array_unique($array_kompakt[$anzahl][2]);
print_r($result);
array_unique() schmeißt alle Dubletten raus.
Hast Du z.B
<?php
$my_array = Array(
[0] => 1
[1] => 1
[2] => 1
[3] => 1
[4] => 1
[5] => 2
[6] => 2
[7] => 2
[8] => 2
[9] => 2
);
$my_unique_array = array_unique($my_array);
echo '<pre>';
print_r($my_unique_array);
echo '</pre>';
?>
Sollte Dir dann sowas ausgeben:
Array(
[0] => 1
[5] => 2
)
Und wenn Du arrays durchlaufen willst schau Dir diesbezüglich mal "foreach" an.
Grüße
Andreas
Hi!
Ich habe den Fehler gefunden.
Und zwar das hier habe ich in mein array geschrieben:
$gesamt_liste3 = "1 ;1 ;1 ;1 ;1 ;2 ;2 ;2 ;2 ;2 ";
ich habe das nun geändert
$gesamt_liste3 = "1;1;1;1;1;2;2;2;2;2";
und nun geht es!
Die leerzeichen hatte ich da nur reingebaut um es übersichtlicher in meinem test zu haben.
Scheisse war... ;)
Hast Du z.B
JA habe ich!
<?php
$my_array = Array(
[0] => 1
[1] => 1
[2] => 1
[3] => 1
[4] => 1
[5] => 2
[6] => 2
[7] => 2
[8] => 2
[9] => 2
);$my_unique_array = array_unique($my_array);
echo '<pre>';
print_r($my_unique_array);
echo '</pre>';?>
Sollte Dir dann sowas ausgeben:
Array(
[0] => 1
[5] => 2
)
Meine Ausgabe ist jedoch
Array
(
[0] => 1
[8] => 2
)
Wieso steht 2 bei mir an Position 8 ? Komisch
Hi!
Sollte Dir dann sowas ausgeben:
Array(
[0] => 1
[5] => 2
)Meine Ausgabe ist jedoch
Array
(
[0] => 1
[8] => 2
)Wieso steht 2 bei mir an Position 8 ? Komisch
Das verstehe ich auch nicht. Gemäß http://de3.php.net/manual/de/function.array-unique.php dürfte das nicht so sein.
Poste mal die Ausgabe von
var_dump($my_array);
und von
var_dump($my_unique_array);
Grüße
Andreas
Hi!
Sollte Dir dann sowas ausgeben:
Array(
[0] => 1
[5] => 2
)Meine Ausgabe ist jedoch
Array
(
[0] => 1
[8] => 2
)Wieso steht 2 bei mir an Position 8 ? Komisch
Das verstehe ich auch nicht. Gemäß http://de3.php.net/manual/de/function.array-unique.php dürfte das nicht so sein.
Poste mal die Ausgabe von
var_dump($my_array);
und von
var_dump($my_unique_array);
var_dump($my_unique_array);
array(2) {
[0]=>
string(1) "1"
[8]=>
string(1) "2"
}
var_dump($wert_des_anderen_array);
array(10) {
[0]=>
string(1) "1"
[1]=>
string(1) "1"
[2]=>
string(1) "1"
[3]=>
string(1) "1"
[4]=>
string(1) "1"
[5]=>
string(1) "2"
[6]=>
string(1) "2"
[7]=>
string(1) "2"
[8]=>
string(1) "2"
[9]=>
string(1) "2"
}
Ähh ja naja ist ja auch egal...
Trotzdem Danke!!!
Hallo Hans Dieter Michael Hubertus ;-)
Ähh ja naja ist ja auch egal...
Trotzdem Danke!!!
Naja, vielleicht ist es ein bug.
Welche PHP-Version und welches Betriebsystem verwendet Ihr?
Grüße
Andreas
Welche PHP-Version und welches Betriebsystem verwendet Ihr?
PHP Version 4.2.3
Hallo Michael,
sprechen wir vom gleichen Array das Du mit der for-Schleife in [pref:t=70878&m=407846] erzeugt hast?
Grüsse AndreD
sprechen wir vom gleichen Array das Du mit der for-Schleife in [pref:t=70878&m=407846] erzeugt hast?
Ja das selbe Array wie in Deinem Link was sonst!?
Hi,
Ja das selbe Array wie in Deinem Link was sonst!?
Ach ich dachte nur das man es in dem Fall vielleicht
ein wenig anders lösen könnte, aber so wie es aussieht
hast Du wohl schon eine Lösung?
Grüsse AndreD
Hi!
Nun soll das Array ausgeben werden nur doppelte Ausgaben mit gleichen Wert darf es nicht geben. Wie vergleiche ich den Inhalt des Feldes 0 mit 1, 2 3, 4, 5 ... ?
Also Ausgabe möchte ich nicht
1
1
1
1
1
2
2
2
2
2
stehen habensondern nur
1
2Aber wie mache ich das? vielleicht gibt es da ja doch eine passenden funktion die ich noch nicht entdeckt habe?
Man nehme: "Array Funktionen" im PHP-Manual -> http://de3.php.net/array
Man suche in der Liste nach der Funktion die wie folgt beschrieben wird: "Entfernt doppelte Werte aus einem Array"
-> Fertig ;-)
Grüße
Andreas