php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.08.2004, 15:41  
Gast
 
Beiträge: n/a
Standard Werte aus mehr. dim. Array filtern und zählen

Hallo,

für eine Sitemap möchte ich werte aus einem mehrdimensionalen Array filtern, um meine
Code:
<span>
#s richtig setzen zu können.

Das Array ist folgendermaßen aufgebaut:
Zitat:
array(17) {
[0]=>
array(4) {
[0]=>
string(13) "Aktuelle News"
[1]=>
string(1) "1"
[2]=>
string(13) "aktuelle_news"
[3]=>
string(1) "1"
}
In der 2. Dimension kann es an Stelle [1] doppelte Einträge geben. Für alle Array-Elemente, bei denen dieses der Fall ist möchte ich die Summe dieser Einträge ermitteln, um den Wert in einer SChleife verwenden zu können.
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.08.2004, 20:08  
Gast
 
Beiträge: n/a
Standard

Bin mir nicht sicher, ob Dir das ausreicht, aber...
PHP-Code:
<?php
$testdaten 
= array(
        array(
1=>'7'),
        array(
1=>'1'),
        array(
1=>'2'),
        array(
1=>'1'),
        array(
1=>'3'),
        array(
1=>'1'),
        array(
1=>'7')
    );

$count1 = array();
foreach(
$testdaten as $d)
    @
$count1$d[1] ]    += 1;
    
print_r($count1);
?>
 
Alt 18.08.2004, 22:46  
Gast
 
Beiträge: n/a
Standard array

@Volker:

Hi Volker, vielken Dank für Deinen Hinweis. Nach einiger Fummelei habe ich es Dank Deiner Hilfe hinbekommen.
Die Zeile
Code:
@$count1[ $d[1] ]    += 1;
habe ich allerdings nicht wirklich verstanden. Kannst Du das Rätsel noch lösen?

Außerdem habe ich immer noch meine Probleme mit Arrays. Kennt nicht jemand ein wirklich gutes Tutorial?
Außerdem ist meiner Meinung nach nicht immer der Weg das Ziel! Mein Weg zum Ziel (siehe Code) sieht äußerst umständlich aus. Hat nicht zufällig jemand Lust, mir ein paar Tipps zu geben, was man hier besser hätte machen können?

Code:
			<?php 
	$result = mysql_query("SELECT * FROM subnav WHERE state = '".$HTTP_GET_VARS['state']."' ;");
    while ( $tab = mysql_fetch_array($result) )
    {
        $rez[] = array($tab['name_1'], $tab['iddep_1'], $tab['url'], $tab['id_1']);
    }
    $cid=0;
	$anz = $rez;  
	$count1 = array(); 
	foreach($anz as $d) 
    @$count1[ $d[1] ]    += 1;  
    for ($tt=0;$tt<sizeof($rez);$tt++)
    {	
	   if ($rez[$tt][1]!=$cid)
        {	
			 $counter2=0; 
             $cid=$rez[$tt][1];
             $result = mysql_fetch_array(mysql_query("SELECT * FROM hautnav WHERE hautnav.id_1= '".$rez[$tt][1]."' ;"));
			 echo "<span class=\"contentISP\">";
             echo $result['name_1']."
\n";
			 
 		}		$counter2 = $counter2+1;
        	echo "   <a href=\"".$rez[$tt][2].".php?state=".$HTTP_GET_VARS['state']."\">".$rez[$tt][0]."</a>
\n"; 

		if ($counter2==$count1[$cid])
        {
       		echo "</span>";	
        }
	}
	?>
 
Alt 19.08.2004, 00:34  
Gast
 
Beiträge: n/a
Standard

$d nimmt bei jeden Durchlauf der foreach-Schleife den Wert des aktuellen Elements an. Im Beispiel also das jeweilige Feld in der zweiten Dimension.
Beim ersten Durchlauf im Beipiel array(1=>'7')
$d[1] liefert also den Wert, dessen Vorkommen/Häufigkeit Du zählen willst.
Im Beispiel beim ersten Druchlauf den Wert 7.
Der Zähler für das Vorkommen von 7 muss demnach um eins erhöht werden.
$count1 speichert die Vorkommen aller Werte. Beim ersten Durchlauf muss $count1[7] um eins erhöht werden. $d[1] liefert diesen (Index-)Wert =>$count1[ $d[1] ] += 1;
php gibt eine Warnung aus, wenn man lesend auf ein Feldelement zugreift, das es (noch) nicht gibt. Das @-Zeichen vor dem Bezeichner unterdrückt diese Warnung. Beim ersten Durchlauf gibt es $d[7] nicht; php würde eine Warnung auswerfen und den Wert von $d[7] als NULL annehmen. Glücklicherweise ist bei php NULL+1 = 1, genau das gewünschte Verhalten und die Warnung ist überflüssig => @$count1[ $d[1] ] += 1;
Nicht ganz sauber, aber praktikabel - denke ich.

--
Wenn Du die Einträge nach der ersten Spalte (dank SELECT * kann ich Dir nicht sagen, welche das ist) sortiert abfragst (also SELECT ... ORDER BY nameDesFeldes), reicht es Dir doch aus, wenn Du vergleichst, ob der aktuelle Wert gleich dem vorherigen ist. Wenn nicht, fängst Du einen neuen Abschnitt an.
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Doppelte Einträge aus Array Filtern Robstar Datenbanken 25 01.06.2006 11:56
array oder mehrere werte als rückgabe PHP Tipps 2006 17 02.03.2006 21:27
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
Array Filtern? PHP Tipps 2007 3 19.12.2005 17:18
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
Alle Werte eines Array mischen PHP Tipps 2005-2 2 28.07.2005 17:37
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
[Erledigt] $_SESSION: Array Werte werden nicht gespeichert. PHP-Fortgeschrittene 11 11.05.2005 23:13
array in array filtern, kopieren oder irgendwas, das hilft PHP Tipps 2005 2 14.04.2005 12:10
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31
Abfrage mit id aus anderer Tabelle suter PHP Tipps 2004-2 15 16.12.2004 14:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php array filtern, http://www.php.de/php-tipps-2004/7226-werte-aus-mehr-dim-array-filtern-und-zaehlen.html, php array filter, php filter array, php multidimensional array zählen, php array wert zählen, array filtern php, filter array php, php dim, häufigkeit im array zählen php, array php häufigkeit zählen, foreach zählen php, php array vorkommen verschiedene string zählen, php liste filtern, php tutorial array filtern, zeilen eines arrays zählen php, php array 2 dimensional filtern, php array filter with foreach, php array werte filtern, elemente mehrdimensionales arrays zählen

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:51 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.