php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.07.2005, 00:29  
Erfahrener Benutzer
 
Registriert seit: 15.07.2005
Beiträge: 230
zapate
Standard arrayproblem

ich habe folgendes array:


$cat[0]['name']="";
$cat[0]['ID']="";
$cat[0]['subid']="";
$cat[1]['name']="";
$cat[1]['ID']="";
$cat[1]['subid']="";
$cat[2]['name']="";
$cat[2]['ID']="";
$cat[2]['subid']="";

usw

also ich will im Feld ID alles gruppieren was ID=0 hat und das in einen neuen array schreiben.

also wenn $cat[0]['ID']="0"; $cat[1]['ID']="0"; und $cat[3]['ID']="2"; ist dann will ich in einem neuen array der die ersten beiden einträge aus cat haben.
zapate ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 24.07.2005, 00:33  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Sorry. Aber wie wäre es mal mit einem leicht verständlichen Beispiel?
Was willst Du wann wo haben?
imported_Ben ist offline  
Alt 24.07.2005, 00:36  
Erfahrener Benutzer
 
Registriert seit: 08.06.2004
Beiträge: 865
RudiS
Standard

Hier eine Möglichkeit:
PHP-Code:
<?php
  $array 
= array();

  foreach (
$cat as $value)
   {
    
$array[$value['ID']][] = $value;
   }

  echo 
'<pre>'."\n";
  
print_r($array);
  echo 
'</pre>'."\n";
 
?>
Die 'ID' ist gleich dem Index des neuen Arrays.
mfg RudiS
__________________
Kunst kommt von Können und nicht von wollen, denn sonst würde es ja Wunst heißen.
RudiS ist offline  
Alt 24.07.2005, 00:52  
Erfahrener Benutzer
 
Registriert seit: 15.07.2005
Beiträge: 230
zapate
Standard

Arraystruktur:
Code:
Array
(
    [0] => Array
        (
            [hID] => 1
            [sID] => 2
            [Hauptcat] => Gästebuch
            [Subcat] => Eintragen
        )

    [1] => Array
        (
            [hID] => 1
            [sID] => 3
            [Hauptcat] => Gästebuch
            [Subcat] => Archiv
        )

    [2] => Array
        (
            [hID] => 45049
            [sID] => 45051
            [Hauptcat] => neutest2
            [Subcat] => tester
        )

    [3] => Array
        (
            [hID] => 45044
            [sID] => 45045
            [Hauptcat] => test
            [Subcat] => neutest7
        )

    [4] => Array
        (
            [hID] => 45047
            [sID] => 45048
            [Hauptcat] => neutest8
            [Subcat] => neutest1
        )

    [5] => Array
        (
            [hID] => 45044
            [sID] => 45047
            [Hauptcat] => test
            [Subcat] => neutest8
        )

    [6] => Array
        (
            [hID] => 45047
            [sID] => 45049
            [Hauptcat] => neutest8
            [Subcat] => neutest2
        )

    [7] => Array
        (
            [hID] => 45044
            [sID] => 45046
            [Hauptcat] => test
            [Subcat] => neutest9
        )

)

nun würde ich gerne hID durchsuchen. Undzwar hätte ich gerne alle Einträge in nem neuen Array gespeichert welche hID =1 sind.
zapate ist offline  
Alt 24.07.2005, 00:56  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hm. Würd ich mit einer Schleifenkonstruktion und eine if-Abfrage lösen.
Geht das auch direkt? Eher nicht, oder?
imported_Ben ist offline  
Alt 24.07.2005, 01:01  
Erfahrener Benutzer
 
Registriert seit: 15.07.2005
Beiträge: 230
zapate
Standard

hmm naja es sollte möglichst nicht zu serverlastig sein. Muss ich den Array denn komplett durchlaufen oder geht das irgendwie anders?

was ist mit array_search?
zapate ist offline  
Alt 24.07.2005, 01:09  
Erfahrener Benutzer
 
Registriert seit: 08.06.2004
Beiträge: 865
RudiS
Standard

Du musst das Array auf jeden Fall einmal durchlaufen, wie ich es auch gemacht habe. Wie du die Sachen dann in das neue Array einordnest musst du dir selbst überlegen.
mfg RudiS
__________________
Kunst kommt von Können und nicht von wollen, denn sonst würde es ja Wunst heißen.
RudiS ist offline  
Alt 24.07.2005, 01:11  
Gast
 
Beiträge: n/a
Standard

Feldfunktionen sind mächtig.
PHP-Code:
<?php
class ElementFilter
{
    public 
$select;
    public 
$element;
    
    function 
filter($a)
    {
        return (
$this->select==$a[$this->element]);
    }
}


$arr = array (
        array(
'hID' => 1'sID' => 2'Hauptcat' => 'Gästebuch''Subcat' => 'Eintragen'),
        array(
'hID' => 1'sID' => 3'Hauptcat' => 'Gästebuch''Subcat' => 'Archiv'),
        array(
'hID' => 45049'sID' => 45051'Hauptcat' => 'neutest2''Subcat' => 'tester'),
        array(
'hID' => 45044'sID' => 45045'Hauptcat' => 'test''Subcat' => 'neutest7'),
        array(
'hID' => 45047'sID' => 45048'Hauptcat' => 'neutest8''Subcat' => 'neutest1'),
        array(
'hID' => 45044'sID' => 45047'Hauptcat' => 'test''Subcat' => 'neutest8'),
        array(
'hID' => 45047'sID' => 45049'Hauptcat' => 'neutest8''Subcat' => 'neutest2'),
        array(
'hID' => 45044'sID' => 45046'Hauptcat' => 'test''Subcat' => 'neutest9')
    );

$f = new ElementFilter;
$f->element 'hID'$f->select 1;
$r array_filter($arr, array($f'filter'));

print_r($r);
siehe auch: http://php.net/array_filter

gute Nacht.
 
Alt 24.07.2005, 01:17  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Oha.
Ich hätte es jetzt so gelöst:
PHP-Code:
<?php

    $array 
= array(array('hID' => 1,
                         
'sID' => 2,
                         
'Hauptcat' => 'Gästebuch'),
                   array(
'hID' => 1,
                         
'sID' => 3,
                         
'Hauptcat' => 'News'),
                   array(
'hID' => 600,
                         
'sID' => 601,
                         
'Hauptcat' => 'irgendwas'));  
                         
     
    echo 
'<pre>';
    
print_r($array);
    echo 
'</pre><hr />';        
                         
    
$searched_hID 1;
    
$new = array();
    
    foreach(
$array as $key) {
        if(
is_array($key)) {
            if(
$key['hID'] == $searched_hID) {
                    
$new[] = $key
            }
        }
    }

    echo 
'<pre>';
    
print_r($new);
    echo 
'</pre>';                                              

?>
aber Volkers Lösung ist natürlich super

Wieder etwas dazugelernt *freu*
imported_Ben ist offline  
Alt 24.07.2005, 03:14  
Erfahrener Benutzer
 
Registriert seit: 15.07.2005
Beiträge: 230
zapate
Standard

PHP-Code:
<?
   
function filter($a)
   {
      return (
$this->select==$a[$this->element]);
   } 

function 
sub($id){
        
$this->element 'hID'
        
$this->select $id
        
$r array_filter($this->cat'filter');
        return 
$r;
}
?>
Funktioniert nicht so ganz. filter ist keine Callbackfunktion sagt er mir. Wenn filter ausserhalb der Klasse als Funktion gecoded wird
z.b.
Code:
   function filter($a)
   {
      return (1==$a['hID']);
   }
funzt es einwandfrei. Wiß nichtmehr weiter, wie rufe ich denn callback innerhal bder Klasse auf?

Vorallem was mich verwirrt, du machst es ja auch aus der Klasse heraus


edit: muha du hastes mir ja sozusagen in die wiege gelegt:
Code:
		$r = array_filter($this->cat, array($this,'filter'));
zapate ist offline  
 


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
arrayproblem PHP Tipps 2006 2 20.01.2006 20:22
arrayproblem zapate PHP Tipps 2005-2 3 16.07.2005 09:04


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:33 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.