php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.04.2008, 17:10  
Neuer Benutzer
 
Registriert seit: 24.04.2008
Beiträge: 8
sqrt befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Variable Anzahl Parameter bie build-in-functions

Hallo,

ich möchte eine Funktion schreiben, der man als ersten Parameter einen array(aus datenbank zeilen, also Arrays) und beliebig viele Sortflags übergeben kann.

Dieser Array soll dann in einezelne Spalten-Arrays umgewandelt und mittels array_multisort sortiert werden. Soweit die Thorie.

Es harkt auch nur an einer Stelle, die Anzal der Parameter, die ich der Funktion array_multisort übergeben möchte ist mir unbekannt, da variabel.

Gibt es in PHP eine möglichkeit so etwas zu bauen?

also ich bin auf der Suche nach einer Möglichkeit

$ary = array(array(),array(), ... );

array_multisort(func_name($ary));

aufzurufen, wobei ich mir func_name so vorstelle:

function func_name($ary)
{
// verabeitung
// return eines Wertes (Zeichenkette), so dass array_mutlisort funktioniert
}

Im einfachsten Fall sollen also semtlichen Arrays aus $ary der Funktion array_multisort übergeben werden. Wenn das klappt, bekomme ich das mit den Sort Flags auch noch hin

Vielen Dank für Eure Hilfe im Voraus

Geändert von sqrt (24.04.2008 um 17:12 Uhr).
sqrt ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 24.04.2008, 22:15  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

PHP-Code:
function foo()
{
    echo 
'foo() wurde mit ' func_num_args() . " Parametern aufgerufen<br />\n";
    
$args func_get_args();
    echo 
'Parameter: ' join(','$args)  . "<br />\n";
}

foo(1,2,3,4,5);
foo('a','b','c'); 
Darüber hinaus soltlest Du Dir array_shift() und call_user_func_array() ansehen.
David ist offline  
Alt 27.04.2008, 16:35  
Neuer Benutzer
 
Registriert seit: 24.04.2008
Beiträge: 8
sqrt befindet sich auf einem aufstrebenden Ast
Standard

Hallo,
vielen dank, für den hinweis mit den variablen Parametern, aber wie kann ich diese, an eine built in function weitergeben?

Wie gesagt geht es hier konkret um die array_multisort function (die ja mit einer variablen Anzahl Parameter aufgerufen werden kann).

um das zu verdeutlichen
PHP-Code:
function foo()
{
    echo 
'foo() wurde mit ' func_num_args() . " Array aufgerufen<br />\n";
    
$args func_get_args();
    
//und hier EIN array_multisort aufruf mit ALLEN arrays als Parametern
}

foo($array1$array2etc.) 
Hoffe das ist ein bisschen klarer geworden, vielen Dank noch mal ...
sqrt ist offline  
Alt 27.04.2008, 16:41  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von David
Darüber hinaus soltlest Du Dir array_shift() und call_user_func_array() ansehen.
Im Handbuch, PHP: - Manual
David ist offline  
Alt 29.04.2008, 11:18  
Neuer Benutzer
 
Registriert seit: 24.04.2008
Beiträge: 8
sqrt befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank für die Hilfe und entschuldigung für die blöde Nachfrage!

Ich hatte: call_user_func_array() nicht richtig verstanden ...

Viele Grüße
...
sqrt ist offline  
Alt 24.05.2008, 01:11  
Neuer Benutzer
 
Registriert seit: 24.04.2008
Beiträge: 8
sqrt befindet sich auf einem aufstrebenden Ast
Standard

Der Tipp war zwar hilfreich doch liefert er nicht das gewünschte Ergebnis:

Hier mal mein Code:

PHP-Code:
<? 
    $ary 
= array();
    
$ary[0] = array("id" => 3,
                                    
"name" => "Hans",
                                    
"testing" => "asdf",
                                    
"zahl" => 5);
    
$ary[1] = array("id" => 2,
                                    
"name" => "Fritz",
                                    
"testing" => "fdsa",
                                    
"zahl" => 10);
  
$ary[2] = array("id" => 1,
                                    
"name" => "Anette",
                                    
"testing" => "hjkl",
                                    
"zahl" => 15);
    
my_sort($ary);
    
    function 
my_sort($ary
    {
        foreach (
$ary as $key => $row
        {
        
$i 0;
        foreach(
$row as $entry)
        {
            
$temp[$i][$key] = $entry;
            
$keys[$key] = $key;
            
$i++;        
        }
    }
        
$temp[$i] = $ary;
        
$temp2 $temp;
        
        
call_user_func_array('array_multisort',$temp2);
        
array_multisort($temp[0],$temp[1], $temp[2], $temp[3]);    
        
        if(
$temp == $temp2)
        {
            echo 
"gleich";
        }
        
var_dump($temp);
        
var_dump($temp2);
    }
    
?>
Hier die Ausgaben für die var_dumps, eigentlich sollte man das gleiche erwarten, doch nur $temp liefert was ich möchte. Was ist an der Funktion falsch?

PHP-Code:
array(5) {
  [
0]=>
  array(
3) {
    [
0]=>
    
int(3)
    [
1]=>
    
int(2)
    [
2]=>
    
int(1)
  }
  [
1]=>
  array(
3) {
    [
0]=>
    
string(4"Hans"
    
[1]=>
    
string(5"Fritz"
    
[2]=>
    
string(6"Anette"
  
}
  [
2]=>
  array(
3) {
    [
0]=>
    
string(4"asdf"
    
[1]=>
    
string(4"fdsa"
    
[2]=>
    
string(4"hjkl"
  
}
  [
3]=>
  array(
3) {
    [
0]=>
    
int(5)
    [
1]=>
    
int(10)
    [
2]=>
    
int(15)
  }
  [
4]=>
  array(
3) {
    [
0]=>
    array(
4) {
      [
"id"]=>
      
int(3)
      [
"name"]=>
      
string(4"Hans"
      
["testing"]=>
      
string(4"asdf"
      
["zahl"]=>
      
int(5)
    }
    [
1]=>
    array(
4) {
      [
"id"]=>
      
int(2)
      [
"name"]=>
      
string(5"Fritz"
      
["testing"]=>
      
string(4"fdsa"
      
["zahl"]=>
      
int(10)
    }
    [
2]=>
    array(
4) {
      [
"id"]=>
      
int(1)
      [
"name"]=>
      
string(6"Anette"
      
["testing"]=>
      
string(4"hjkl"
      
["zahl"]=>
      
int(15)
    }
  }
}
array(
5) {
  [
0]=>
  array(
3) {
    [
0]=>
    
int(1)
    [
1]=>
    
int(2)
    [
2]=>
    
int(3)
  }
  [
1]=>
  array(
3) {
    [
0]=>
    
string(6"Anette"
    
[1]=>
    
string(5"Fritz"
    
[2]=>
    
string(4"Hans"
  
}
  [
2]=>
  array(
3) {
    [
0]=>
    
string(4"hjkl"
    
[1]=>
    
string(4"fdsa"
    
[2]=>
    
string(4"asdf"
  
}
  [
3]=>
  array(
3) {
    [
0]=>
    
int(15)
    [
1]=>
    
int(10)
    [
2]=>
    
int(5)
  }
  [
4]=>
  array(
3) {
    [
0]=>
    array(
4) {
      [
"id"]=>
      
int(1)
      [
"name"]=>
      
string(6"Anette"
      
["testing"]=>
      
string(4"hjkl"
      
["zahl"]=>
      
int(15)
    }
    [
1]=>
    array(
4) {
      [
"id"]=>
      
int(2)
      [
"name"]=>
      
string(5"Fritz"
      
["testing"]=>
      
string(4"fdsa"
      
["zahl"]=>
      
int(10)
    }
    [
2]=>
    array(
4) {
      [
"id"]=>
      
int(3)
      [
"name"]=>
      
string(4"Hans"
      
["testing"]=>
      
string(4"asdf"
      
["zahl"]=>
      
int(5)
    }
  }

Vielen Dank schon mal Grüße sqrt
sqrt ist offline  
Alt 24.05.2008, 01:27  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Oh Kopfchaos. Was soll die Funktion denn erzeugen?
nikosch ist offline  
Alt 24.05.2008, 08:52  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Sieht mir irgendwie nach dem Versuch aus, eine Pivottabelle zu erstellen. Aber sicher bin ich mir auch nicht.
David ist offline  
Alt 24.05.2008, 10:56  
Neuer Benutzer
 
Registriert seit: 24.04.2008
Beiträge: 8
sqrt befindet sich auf einem aufstrebenden Ast
Standard Ziel

Ziel ist es ein Skript al Ã* PHP: Manual Quick Reference Example #3 zu schreiben, dass DB Einträge nachträglich sortiert (Ich weiß, man könnte es sicher in manchen Fällen auch auf der DB sortieren, dass ist hier aber nicht die Idee)

Nur soll mein Skript im Gegensatz zu dem auf php.net eine Varibele Anzahl von Fledern pro Datensatz entgegen nehmen könne.

Vielen Dank
sqrt
sqrt ist offline  
Alt 24.05.2008, 11:00  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Dann ist vielleicht usort() besser geeignet.
David 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
[Erledigt] Falsche Anzahl der Datensätze wird ausgegeben noOx PHP Tipps 2008 10 30.06.2008 16:54
[Erledigt] Max Anzahl Checkboxen Hu5eL JavaScript, Ajax und mehr 2 25.06.2008 15:37
[Erledigt] inhalt einer Datei in Variable Speichern mupilz PHP Tipps 2008 6 31.05.2008 13:28
[Erledigt] Variable wird nicht übergeben Thorsten PHP Tipps 2008 8 24.05.2008 11:57
Variable als optionalen Parameter? Mex PHP Tipps 2006 3 20.04.2006 07:05
Variable Anzahl Spalten im Ergebniss möglich? Datenbanken 4 21.07.2005 13:19
Variable Anzahl Felder mit QuickForm und Smarty PHP-Fortgeschrittene 3 20.04.2005 05:03
variable als functions namen benutzen PHP-Fortgeschrittene 9 13.02.2005 04:22

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php variable anzahl parameter, php variable anzahl an parametern, php funktion variable parameter, php function variable anzahl parameter, php function parameter, php function variable parameters, php funktion mit variablen parametern, php variable parameter anzahl, php function variable parameter, php variable parameterliste, php variable parameter, variable anzahl von parametern php, php function variable arguments, function php variable parameter, php variable anzahl von parametern, php funktion parameter variable, php function variable parameter anzahl, php variable anzahl argumente übergeben, php anzahl parameter, variable anzahl parameter php

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