php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 15.08.2011, 10:17  
Benutzer
 
Registriert seit: 16.05.2011
Beiträge: 50
PHP-Kenntnisse:
Anfänger
JohnWorks befindet sich auf einem aufstrebenden Ast
Standard [gelöst] Summe aus mehrdimensionalem Array

Guten Morgen,

ich habe grad mal versucht aus einem mehrdimensionalen Array eine Summe zu bilden.

PHP-Code:
array_walk($myArraycreate_function('$i,$k,$sum''$sum += $i[\'Preis\'];'), &$summe);
echo 
$summe
Leider kommt immer folgender Fehler: Deprecated: Call-time pass-by-reference has been deprecated in ...

Auch wenn ein @ vorangestellt wird? Jmd ne Idee wie ich das "wechbekomme" ohne es zu unterdrücken?

Geändert von JohnWorks (15.08.2011 um 12:43 Uhr).
JohnWorks ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 15.08.2011, 10:21  
Erfahrener Benutzer
 
Registriert seit: 07.06.2008
Beiträge: 992
PHP-Kenntnisse:
Fortgeschritten
Frank befindet sich auf einem aufstrebenden Ast
Frank eine Nachricht über ICQ schicken Frank eine Nachricht über MSN schicken Frank eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von JohnWorks Beitrag anzeigen
PHP-Code:
array_walk($myArraycreate_function('$i,$k,$sum''$sum += $i[\'Preis\'];'), &$summe);
echo 
$summe
Lass' das & vor &$summe weg. Das $summe als Referenz übergeben wird muss in der array_walk Funktion festgelegt werden (ich schätze das wurde auch getan) und nicht in deinem Aufruf
PHP-Code:
function array_walk($array$function, &$return) {

__________________
Frank ist offline   Mit Zitat antworten
Alt 15.08.2011, 10:24  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Du könntest als Callback anstatt einer anonymen Funktion eine Objekt-Methode nutzen und den Rückgabewert im Objekt speichern.
PHP-Code:
class SumWalker
{
  private 
$result;
  public function 
callback($i$k)
  {
    
$this->result += $i['Preis'];
  }
  public function 
getResult()
  {
     return 
$this->result;
  }
}
$sumWalker = new SumWalker;
array_walk($myArray, array($sumWalker'callback'));
echo 
$sumWalker->getResult(); 

@Frank: Ist leider nicht so...

Geändert von fab (15.08.2011 um 10:28 Uhr).
fab ist offline   Mit Zitat antworten
Alt 15.08.2011, 10:58  
Benutzer
 
Registriert seit: 16.05.2011
Beiträge: 50
PHP-Kenntnisse:
Anfänger
JohnWorks befindet sich auf einem aufstrebenden Ast
Standard

Erstmal danke

@Frank: Leider selbes Ergebnis.
@fab: Die Version ist ein wenig zu "heavy" =) Wollte es eigentlich ohne Objekt-Methode nutzen. Da Ziel sein soll aus $myArray nachher x-beliebige Summen auszulesen.
JohnWorks ist offline   Mit Zitat antworten
Alt 15.08.2011, 11:27  
Erfahrener Benutzer
 
Registriert seit: 29.10.2009
Beiträge: 113
PHP-Kenntnisse:
Fortgeschritten
mYkon befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
array_walk($myArraycreate_function('$i,$k,&$sum''$sum += $i[\'Preis\'];'), $summe); 
mYkon ist offline   Mit Zitat antworten
Alt 15.08.2011, 11:45  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

@mYkon: das hilft auch nichts, da $summe an array_walk schon nicht als Referenz übergeben wird.

@JohnWorks: Nenn mir einen vernünftigen Grund dagegen Ich verstehe zwar nicht was du mit x-beliebig meinst aber wenn das darauf hinausläuft dass die Summe von unterschiedlichen Array-Elementen gebildet wird ist doch eine konfigurierbare Klasse ideal. Besser als jedes Mal mit create_function den Parser neu anschmeißen zu lassen und eine neue Funktion zu generieren. DAS ist nämlich heavy.
fab ist offline   Mit Zitat antworten
Alt 15.08.2011, 12:43  
Benutzer
 
Registriert seit: 16.05.2011
Beiträge: 50
PHP-Kenntnisse:
Anfänger
JohnWorks befindet sich auf einem aufstrebenden Ast
Standard

Nicht die feinste Lösung aber es funktioniert:
PHP-Code:
array_walk($myArraycreate_function('$i,$k,$sum''$sum[0] += $i[\'Preis\'];'), array(&$summe)); 
JohnWorks ist offline   Mit Zitat antworten
Alt 15.08.2011, 14:50  
Erfahrener Benutzer
 
Registriert seit: 07.06.2008
Beiträge: 992
PHP-Kenntnisse:
Fortgeschritten
Frank befindet sich auf einem aufstrebenden Ast
Frank eine Nachricht über ICQ schicken Frank eine Nachricht über MSN schicken Frank eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von fab Beitrag anzeigen
@Frank: Ist leider nicht so...
zumindest auf meinem Server
PHP-Code:
<?php

$myArray 
= array(
array(
'Preis' => 5),
array(
'Preis' => 5),
array(
'Preis' => 5),
array(
'Preis' => 5)
);
$summe 0;
array_walk($myArraycreate_function('$i,$k,$sum''$sum[0] += $i[\'Preis\'];'), $summe); 
echo 
$summe;
ergibt Tadellos 20 als Ausgabe...
Kann aber durchaus an meiner modifzierten php version liegen
Aber davon ab, bekomme ich noch nichteinmal die Fehlermeldung :P

//EDIT
habe es gefunden. Es liegt an der php ini Einstellung allow_call_time_pass_reference = On/Off.
Wenn On wird der Fehler nicht verursacht und es Funktioniert. Wenn Off wird der Fehler verursacht und es funktioniret nicht.
__________________

Geändert von Frank (19.08.2011 um 14:48 Uhr).
Frank ist offline   Mit Zitat antworten
Alt 15.08.2011, 15:25  
Benutzer
 
Registriert seit: 29.06.2011
Beiträge: 87
PHP-Kenntnisse:
Fortgeschritten
ChristianK ist zur Zeit noch ein unbeschriebenes Blatt
Standard

array_walk_recursive?
ChristianK ist offline   Mit Zitat antworten
Antwort


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] Mehrdimensionalem Array umformen, Index neu setzen und anschließend sortie wooha PHP Einsteiger 3 26.04.2011 12:08
Array aus SQL Abfrage zusammenbauen um es rekursiv abzuarbeiten litterauspirna PHP Einsteiger 7 01.02.2011 18:44
Array werte zusammen rechnen fabi288 PHP Einsteiger 13 03.01.2011 16:08
mehrdimensionales array inhalte tauschen pidaman PHP Tipps 2010 18 27.08.2010 16:58
Feed in Datenbank eintragen (Formate: json, php serialized, xml) high_five Datenbanken 5 17.06.2010 03:04
[Erledigt] Sortierung mehrerer Arrays philosapiens PHP Tipps 2010 16 08.06.2010 05:22
IE8 verliert Session Lenki PHP-Fortgeschrittene 10 25.04.2010 01:10
[Erledigt] Problem bei update mit array feldern fulltilt PHP Tipps 2010 6 13.02.2010 00:59
[Erledigt] Tabellen die sich selbst referenzieren Squall PHP Tipps 2009 19 04.08.2009 21:33
Array umwandeln von zwei zu mehrdimensional erselbst PHP Tipps 2009 6 02.04.2009 23:30
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Übersicht aus mehrdimensionalem Array erzeugen Crypi PHP-Fortgeschrittene 0 30.01.2006 13:44
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php summe, php array summe, array summe mehrdimensional php, php array_walk klasse, summe mehrdim array, php mehrdimensional array sum, summe aus array errechnen php, php array summen, array_walk mehrdimensionales array, summe eines arrays, php gestamsumme über mehrdimensinales array ausgeben, array_walk create_function sum

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