- Ad -
php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 02-07-2009, 13:16
RamonaS
 Registrierter Benutzer
Links : Onlinestatus : RamonaS ist offline
Registriert seit: Mar 2009
Beiträge: 177
RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit
Standard Index 0 aus array entfernen?

Hallo,

Ich möchte per echo den inhalt aller array-elemente ausgeben, ausser dem ersten elemend - index 0

Das habe ich so gemacht:
PHP-Code:
foreach($arr as $line)
 {
$zt=explode("|",trim($line));
  echo 
"<br />".$zt[1]."|".$zt[2]."|".$zt[3]."|".$zt[4]."|".$zt[5];
 } 
Irgendwie sagt mir mein gefühl das man das kürzer schreiben kann.
Geht das oder muß die ECHO-Zeile so lang sein?
Mit Zitat antworten
  #2 (permalink)  
Alt 02-07-2009, 13:20
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 2.328
h3ll befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
foreach ($arr as $line) {
    echo 
"<br />" trim(substr($linestrpos($line"|")));


Geändert von h3ll (02-07-2009 um 13:23 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 02-07-2009, 13:21
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 2.925
combie befindet sich auf einem aufstrebenden Ast
Standard

array_shift() und implode() könnten helfen.

Alternativ:
strpos() und substr()
__________________
Wir werden alle sterben
Mit Zitat antworten
  #4 (permalink)  
Alt 02-07-2009, 13:40
RamonaS
 Registrierter Benutzer
Links : Onlinestatus : RamonaS ist offline
Registriert seit: Mar 2009
Beiträge: 177
RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Danke h3ll

Bei dir ist noch'n kleiner schönheitsfehler drin, der string befinnt mit einm | der dort weg sollte.


...aber ich hatte selber eine zündende idee, und zwar beinhaltet index 0 eine timestamp und ist somit immer gleich lang, habe jetzt das hier angewendet

echo "<br />".trim(substr($line,11));

das funktioniert sehr gut.
Mit Zitat antworten
  #5 (permalink)  
Alt 02-07-2009, 13:41
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 2.328
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von RamonaS Beitrag anzeigen
Danke h3ll

Bei dir ist noch'n kleiner schönheitsfehler drin, der string befinnt mit einm | der dort weg sollte.
Dann erhöhe den Wert des Offsets um 1.
Mit Zitat antworten
  #6 (permalink)  
Alt 02-07-2009, 13:59
RamonaS
 Registrierter Benutzer
Links : Onlinestatus : RamonaS ist offline
Registriert seit: Mar 2009
Beiträge: 177
RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Jetzt wirds peinlich hier:-)

>Dann erhöhe den Wert des Offsets um 1.
Was ist das denn wieder....Offsets kenn ich nur von meinen fehlermeldungen, wenn ich mit einem array was anstelle bis nix mehr geht:-)
Mit Zitat antworten
  #7 (permalink)  
Alt 02-07-2009, 14:04
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 2.328
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von RamonaS Beitrag anzeigen
Jetzt wirds peinlich hier:-)

>Dann erhöhe den Wert des Offsets um 1.
Was ist das denn wieder....Offsets kenn ich nur von meinen fehlermeldungen, wenn ich mit einem array was anstelle bis nix mehr geht:-)
Ich meine die Startposition von substr():

PHP: substr - Manual
Mit Zitat antworten
  #8 (permalink)  
Alt 02-07-2009, 14:10
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 24.486
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von RamonaS Beitrag anzeigen
Jetzt wirds peinlich hier:-)
Ja - weil du dich jetzt schon zum wiederholten Male darauf hinweisen lässt, bitte die [quote]-Tags zu nutzen, wenn du aus einem Vorposting zitierst!
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #9 (permalink)  
Alt 03-07-2009, 11:41
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 680
fireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Dabei genügt es schon, einfach auf den "Zitieren"-Button zu drücken.

Zitat:
Zitat von RamonaS Beitrag anzeigen
...aber ich hatte selber eine zündende idee, und zwar beinhaltet index 0 eine timestamp und ist somit immer gleich lang, habe jetzt das hier angewendet

echo "<br />".trim(substr($line,11));
Wer sagt, dir dass ein Timestamp immer eine Zahl mit elf Ziffern ist?

PHP-Code:
echo date('Y-m-d H:i:s'1000000000), $lf;
// gibt: 2001-09-09 03:46:40 (für CET) 
Also schneidet dein Script bei Daten vor dem 9. September ein Zeichen zu viel ab.
Ich kann mir allerdings deine Antwort auf dieses Argument schon denken ...

Zitat:

das funktioniert sehr gut.
Das liegt im Auge des Betrachters, ich würde einen Einzeiler vorziehen.

PHP-Code:
$zt 'a|b|c|d|e';
$lf '<br />';

// die unvermeidliche preg_replace()-Lösung: B-)
echo preg_replace('/\A[^|]*\|/'''$zt), $lf
Der passt auch noch, wenn sich das Format des zu entfernenden Teils einmal ändert, weil keine feste Länge angenommen, sondern nach dem Trennzeichen gesucht wird. Man kann das natürlich auch mit strpos() und substr() nachbauen ...

Die Standard-Stringfunktionen von PHP haben das Problem, dass sie das erste Trennzeichen leider immer stehen lassen:

PHP-Code:
echo strstr($zt'|'), $lf;
echo 
strpbrk($zt'|'), $lf
Eine interessante Lösung wäre auch noch die mit preg_split(), aber man muss dazu dann noch list() bemühen. Eleganten Quellcode zu schreiben, ist halt in PHP nicht wirklich drin:
PHP-Code:
// preg_split(,$zt, 2) teilt $zt nur einmal (in [b]2[/b] Teile),
// list (, $out) verwirft den ersten gleich wieder
list (, $out) = preg_split('/\|/'$zt2);
echo 
$out$lf
Eventuell geht das auch mit explode() -- ich war zu faul, es zu testen.

Ein (in PHP zumindest bis 5.2.x nicht möglicher) Einzeiler wäre:
PHP-Code:
echo (preg_split('/\|/'$zt2))[1], $lf
In anderen Script-Sprachen geht sowas.
__________________
PHP-Code:
class Brick implements Throwable {
    
// ... 


Geändert von fireweasel (03-07-2009 um 11:44 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 03-07-2009, 13:58
RamonaS
 Registrierter Benutzer
Links : Onlinestatus : RamonaS ist offline
Registriert seit: Mar 2009
Beiträge: 177
RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Zitat von fireweasel Beitrag anzeigen

Also schneidet dein Script bei Daten vor dem 9. September ein Zeichen zu viel ab.
Ich kann mir allerdings deine Antwort auf dieses Argument schon denken ...

// die unvermeidliche preg_replace()-Lösung: B-)
echo preg_replace('/\A[^|]*\|/', '', $zt), $lf;
Naja, ich hab eigentlich keine daten von der zeit als timestamp noch kürzer als 10 zeichen war

...aber ich werde die "unvermeidliche preg_replace()-Lösung" von dir zum einsatz bringen.

Ich muß dir allerdings gestehen, die regex sind für mich noch viel schlimmer als mit arrays rum zu handieren. Ich lass die dann gleich so denn wenn ich da dran fummel tut sie garantiert nicht mehr.

Ok danke für den hinweiß ich werde das dann einbauen.
Mit Zitat antworten
  #11 (permalink)  
Alt 03-07-2009, 15:05
RamonaS
 Registrierter Benutzer
Links : Onlinestatus : RamonaS ist offline
Registriert seit: Mar 2009
Beiträge: 177
RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

@fireweasel

So ich hab das jetzt so gemacht:
PHP-Code:
if(isset($_GET['uo']) and $_GET['uo']=="s"# Link wurde geklickt
 
{echo "<br /><br />";
  
$arr=explode("\n",file_get_contents($_SERVER["DOCUMENT_ROOT"]."/useronline.txt"));
  foreach(
$arr as $line)
   {echo 
"<br />".preg_replace('/\A[^|]*\|/','',$line),"\n";} # Ganze Zeile anzeigen, ausser Arayy Index 0
 
}
else
 {echo 
"<a href='".$_SERVER['PHP_SELF']."?uo=s'>(".$all.")</a>";}

unset(
$dx,$arr,$line,$zt); 
Würdest du sagen das dieser scriptteil jetzt perfekt ist oder nur zu 100% ok?
Für änderungsvorschläge hab ich immer ein offenes auge.


Mit Zitat antworten
  #12 (permalink)  
Alt 03-07-2009, 15:18
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 2.925
combie befindet sich auf einem aufstrebenden Ast
Standard

Nein, das ist nicht schön!
1. witzig eingerückt! (kaum lesbar)
2. PHP_SELF ermöglicht u.U. XSS Attacken
3. Wozu das unset() ?
__________________
Wir werden alle sterben
Mit Zitat antworten
  #13 (permalink)  
Alt 03-07-2009, 15:24
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

1. Viel kürzer von der Textlänge ist das jetzt auch nicht.
2. Übersichtlicher ist es auch sicher nicht.
3. Schneller schon gar nicht.
Warum also sowas?
Mit Zitat antworten
  #14 (permalink)  
Alt 03-07-2009, 16:21
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 24.486
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von RamonaS Beitrag anzeigen
...aber ich werde die "unvermeidliche preg_replace()-Lösung" von dir zum einsatz bringen.
Das ist in so einem simplen Fall keine gute Idee.

explode leistest hier ganz simpel das gewünschte.
Reguläre Ausdrücke sind i.a.R. kostenintensiver als einfache Stringfunktionen.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #15 (permalink)  
Alt 03-07-2009, 19:45
RamonaS
 Registrierter Benutzer
Links : Onlinestatus : RamonaS ist offline
Registriert seit: Mar 2009
Beiträge: 177
RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Zitat von combie Beitrag anzeigen
Nein, das ist nicht schön!
1. witzig eingerückt! (kaum lesbar)
2. PHP_SELF ermöglicht u.U. XSS Attacken
3. Wozu das unset() ?
zu 2:
Was macht ihr da an stelle von PHP_SELF ? Das soll halt flexibel sein, wird im footerbereich eigeblendet auf jeder seite, also kann ich da kein festen dateinamen einsetzen.

zu 3:
Damit ich auch sicher bin das die varablen/arrays sich nicht addieren oder sowas in der art.

Wie würdest du dieses script schreiben wenn es deins wäre?
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Zeile aus Array entfernen? Daether PHP Developer Forum 2 21-07-2006 09:44
Max index von array tine_ PHP Developer Forum 2 01-02-2005 11:53
define und array-index uschi PHP Developer Forum 4 06-08-2003 16:34
Name des Array-Index TobiaZ PHP Developer Forum 12 21-03-2003 16:06
Array- Elemente anhand des values aus dem array entfernen Thommy PHP Developer Forum 12 30-10-2001 19:05

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

EM 2012 Tipp-Spiel ansehen EM 2012 Tipp-Spiel

Online Tipp-Spiel zur Fussball Europameisterschaft 2012, basierend auf php-Script mit hinterlegter mySql-Datenbank

27.05.2012 tippimnetz | Kategorie: PHP/ Spiele
Advanced Login ansehen Advanced Login

Login-System und Kundenverwaltung, die sich spielend leicht in bestehende Webseiten einbauen lässt und einen enormen Funktionsumfang bietet. Ihre eigene Webseite muss mit Advanced Login nicht umständlich an ein fertiges System angepasst werden.

25.05.2012 Madden | Kategorie: PHP/ Kundenverwaltung
BROM CMS/BelCal 3 ansehen BROM CMS/BelCal 3

Spezielles CMS für Betreiber von Ferienwohnungen. Komplette Seitenerstellung online, Verwaltung mehrerer Objekte, Reservierungssystem mit sofortigem Abgleich im Belegungskalender und vieles mehr bietet dieses Content Management System.

25.05.2012 belcal2 | Kategorie: PHP/ CMS
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:56 Uhr.