Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „Arrayinhalt vergleichen“

ItsNeko

NekoGraphix

Hallöchen,
ich habe folgendes problem:
ich habe ein Array indem immer neue zufällige werde gespeichert werden.
Ein Script soll mir die inhalte ausgeben.
zur Veranschaulichung was ich meine ein beispiel:

in dem Array stehen:
Haus Haus Baum Auto Haus Auto Baum

als ausgabe soll stehen
Haus 3x
Baum 2x
Auto 2x

allerdings kenn ich die werte nicht also währe das
Wert[0] gibt es 3x
Wert[2] gibt es 2x
usw.

danke schon mal für die hilfe

ps.
Sprache ist egal, PHP oder JavaScript, je nachdem was besser ist/ besser klappt
 

Duffman15

Nicht mehr ganz neu hier

AW: Arrayinhalt vergleichen

Dafür gibts in PHP die Funktion array_count_values. Die macht genau das, was du brauchst ;)
Ein beispiel:
PHP:
<?php
$arr = array("Haus", "Baum", "Haus", "Haus", "Auto");
$count_values = array_count_values($arr);
?>
$coun_values wäre dann ein Array, das so aussieht:
Array
(
[Haus] => 3
[Baum] => 1
[Auto] => 1
)
Liebe Grüße,
Lucas :)
 

ItsNeko

NekoGraphix

AW: Arrayinhalt vergleichen

hey das ist ja super,
habe nicht gedacht das es wirklich so einfach ist^^

vielen dank ich werde es gleich mal ausprobieren
 

ItsNeko

NekoGraphix

AW: Arrayinhalt vergleichen

hey erm erstmal sorry für einen doppelpost.

so funktioniert die funktion schon mal ganz gut, allerdings wüsste ich gern ob man da noch was dran stylen kann.
Die ausgabe
Array
(
[Haus] => 3
[Baum] => 1
[Auto] => 1
)
gefällt mir irgendwie nicht so 100%ig.
am besten währe es natürlich wenn die werde in einer tabelle stehen,
also nur name und anzahl ohne eckige klammern, pfeilen usw.
geht das irgendwie?
 

Christian

verpeilt & verschallert

AW: Arrayinhalt vergleichen

ehm, also denken muss man dabei aber schon, das ist die klar, ne? ;)
PHP:
<?
// PHP_EOL ist eine PHP Konstante und bezeichnet die Zeilenumbruch-
// Escapesequenz des aktuellen Betriebssystems.
$input_array = array("Haus", "Baum", "Haus", "Haus", "Auto");
$strTable = '<table>'.PHP_EOL;
foreach( array_count_values( $input_array ) as $key=>$keyCount ){
	$strTable .= '  <tr>'.PHP_EOL;
	$strTable .= '    <td>'.$key.' '.$keyCount.'x</td>'.PHP_EOL;
	$strTable .= '  </tr>'.PHP_EOL;
}
$strTable .= '</table>'.PHP_EOL;

print($strTable);
?>
nicht getestet, sollte aber so vom Blatt gehen

LG
 
Zuletzt bearbeitet:

ItsNeko

NekoGraphix

AW: Arrayinhalt vergleichen

Hey,
vielen dank für die antwort.
tut mir leid ich bin noch ein kleiner newbie in sachen php,
da hilft auch denken nix :p

dein script funktioniert hervorragend^^
vielen dank
 

ItsNeko

NekoGraphix

AW: Arrayinhalt vergleichen

hey da bin ich wieder,
nochmal sorry für ein doppelpost.

so funktioniert das alles schon mal ganz gut, allerdings habe ich jetzt ein neues problem,
ich habe am anfang geschrieben das ich ein array habe, indem immer neue zufällige werde gespeichert werden. Dies ist eine dat datei. Anfangs hatte ich das alles mit javascript geplant, darum konnte ich die datei ganz einfach mit include einbinden.
Aber jetzt weiß ich nicht wie ich die datei in php einbinden kann.
PHP:
$input_array = array(include "daten.dat");
Funktioniert ja nicht.
Hat jemand eine idee wie ich das verwirklichen kann?
 

Christian

verpeilt & verschallert

AW: Arrayinhalt vergleichen

in welchem Format ist denn die Datei.dat?

CSV (mit Trennzeichen getrennte Werte) oder nach ******ize()-Schema?

Am besten Du postest kurz den Inhalt der Datei.dat
 

ItsNeko

NekoGraphix

AW: Arrayinhalt vergleichen

naja der inhalt ist halt genau so das es in ein array hineinpassen würde
Code:
'Haus','Baum','Haus','Auto'
 

Duffman15

Nicht mehr ganz neu hier

AW: Arrayinhalt vergleichen

Also wenn ich das richtig verstehe, steht das so in der Datei?
Naja, dann würde ich datei auslesen (File-Funktionen) und den Inhalt in einer Variable speichern. Und dann würd ich so weitermachen:
PHP:
<?php
...
$value = "'Haus','Baum','Haus','Auto'"; // Variable mit dem Inhalt der Datei
$value = substr($value, 1, 1) // Anführungszeichen am Anfang und am Ende entfernen
$value = explode("','", $value); // In Array verwandeln
...
?>
 

Christian

verpeilt & verschallert

AW: Arrayinhalt vergleichen

schöner:
PHP:
<?
// <CONFIG>

/**
 * Die Daten in der Datei Daten.dat können mehrzeilig aufgeführt sein
 * im CSV Format. 
 * --------------------------
 * Beispiel einer Daten.dat:
 * --------------------------
 * 'Haus','Baum','Haus','Auto'
 * 'Haus','Baum','Haus','Auto'
 * 'Haus','Baum','Haus','Auto'
 */
$filepath  = 'Daten.dat'; 

/**
 * Angaben zur Formatierung der Datenfelder in $filepath
 * Nur Ändern, wenn man das oben genannte Beispiel in 
 * seiner Formatierung geändert hat
 */
$delimiter = ','; # Feldtrenner
$enclosure = "'"; # Feldumklammerung
// </CONFIG>

$input_array = array();
$fHandle   = @fopen( $filepath, 'r' );
while(false !== ($row = fgetcsv($fHandle,@filesize($filepath), $delimiter, $enclosure))){
	if( sizeof($row) > 0 ){
		foreach($row as $field){
			$input_array[]	= $field;
		}
	}
}
@fclose($fHandle);

// PHP_EOL ist eine PHP Konstante und bezeichnet die Zeilenumbruch-
// Escapesequenz des aktuellen Betriebssystems.
$strTable = '<table>'.PHP_EOL;
foreach( array_count_values( $input_array ) as $key=>$keyCount ){
    $strTable .= '  <tr>'.PHP_EOL;
    $strTable .= '    <td>'.$key.' '.$keyCount.'x</td>'.PHP_EOL;
    $strTable .= '  </tr>'.PHP_EOL;
}
$strTable .= '</table>'.PHP_EOL;

print($strTable);
?>
 

ItsNeko

NekoGraphix

AW: Arrayinhalt vergleichen

Hey super danke,
das funktioniert genau so wie ich es mir vorgestellt habe.
Sollte noch was sein dann melde ich mich nochmal^^
vielen dank
 

ItsNeko

NekoGraphix

AW: Arrayinhalt vergleichen

ha erm ich bins wieder xD
tut mir leid ich raffs einfach nicht.
ich hab das jetzt bei mir eingebaut aber irgendwie klappts nicht.
ich bekomm nur eine fehlermeldung.

Code:
 [B]Warning:  [/B]fgetcsv() expects parameter 1 to be resource, boolean given in [B]/users/nekographix/www/hp/stats/stats.php[/B] on line [B]86[/B]
was könnte das sein?

---
Hat sich erledigt ich habs selbst hinbekommen
danke nochmal an alle
 
Zuletzt bearbeitet:

Christian

verpeilt & verschallert

AW: Arrayinhalt vergleichen

Das bedeutet, dass dein Dateipfad nicht stimmt!
Benutz mal das hier:
PHP:
<?
// <CONFIG>

/**
 * Die Daten in der Datei Daten.dat können mehrzeilig aufgeführt sein
 * im CSV Format. 
 * --------------------------
 * Beispiel einer Daten.dat:
 * --------------------------
 * 'Haus','Baum','Haus','Auto'
 * 'Haus','Baum','Haus','Auto'
 * 'Haus','Baum','Haus','Auto'
 */
$filepath  = 'Daten.dat'; 

/**
 * Angaben zur Formatierung der Datenfelder in $filepath
 * Nur Ändern, wenn man das oben genannte Beispiel in 
 * seiner Formatierung geändert hat
 */
$delimiter = ','; # Feldtrenner
$enclosure = "'"; # Feldumklammerung
// </CONFIG>

$input_array = array();
$fHandle   = @fopen( $filepath, 'r' ) or die('Datei ['.$filepath.'] konnte nicht gefunden werden.');
while(false !== ($row = fgetcsv($fHandle,@filesize($filepath), $delimiter, $enclosure))){
    if( sizeof($row) > 0 ){
        foreach($row as $field){
            $input_array[]    = $field;
        }
    }
}
@fclose($fHandle);

// PHP_EOL ist eine PHP Konstante und bezeichnet die Zeilenumbruch-
// Escapesequenz des aktuellen Betriebssystems.
$strTable = '<table>'.PHP_EOL;
foreach( array_count_values( $input_array ) as $key=>$keyCount ){
    $strTable .= '  <tr>'.PHP_EOL;
    $strTable .= '    <td>'.$key.' '.$keyCount.'x</td>'.PHP_EOL;
    $strTable .= '  </tr>'.PHP_EOL;
}
$strTable .= '</table>'.PHP_EOL;

print($strTable);
?>
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
175.155
Beiträge
2.581.853
Mitglieder
67.221
Neuestes Mitglied
opaklaus
Oben