• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

PHP - explode in mehrere arrays

Tone

beobachtet

Registriert
20 Juli 2013
Beiträge
308
Hi,
ich wollte fragen ob man eine Variable mit explode in mehrere arrays speichern kann, welche sich nach dem letzten definierten array wiederholen und hochzählen.

Also ich habe z.B.:

[src=php]
$data = "foo:*:1023:1000:hi;
list($user[$i], $pass[$i]) = explode(":", $data);
[/src]

und möchte als Ergebnis:

[src=php]
user[0]==foo
pass[0]==*
user[1]==1023
pass[1]==1000
user[2]==hi
[/src]


Ich könnte es mir natürlich auch in nur einen array ausgeben lassen und dann sagen jeder 2. Wert kömmt in $pass, dass fand ich jetzt aber erstmal nicht so schön und wollte mich mal erkundigen ob es dafür noch eine vorgesehene, schönere Variante gibt.

Danke :)
 

epiphora

aus Plastik
Veteran

Registriert
14 Juli 2013
Beiträge
3.894
Ort
DE-CIX
Grundsätzlich könntest Du das mithilfe einer Schleife machen, die jedes zweite Element aus dem Array nimmt und dessen Nachfolger als Passwort annimmt.

Die Frage ist aber, wieso Du überhaupt derart seltsam strukturierte Daten hast und ob es überhaupt Sinn macht, User und Passwörter in unterschiedlichen Arrays zu speichern.
 

Tone

beobachtet

Registriert
20 Juli 2013
Beiträge
308
  • Thread Starter Thread Starter
  • #3
Es geht nicht um User und Passwörter, das ist reiner Beispielcode.
Nichts desto trotz hast du aber recht das es seltsam strukturiert ist, lässt sich in dem Fall aber leider nicht ändern, da die Variable die ich auslesen möchte nicht von mir ist und ich auch nicht verändern kann. Ich ergänze nur etwas bestehendes.

Aber wie kann ich das mit der Schleife realisieren? Er fängt ja bei jeden list-Befehl von vorne an, dann hätte ich ja immer nur die ersten 2 Werte.

EDIT: Achso, du sprichst glaube von der selben Variante die mir auch schon in meinen Startpost als Idee kam^^
 

epiphora

aus Plastik
Veteran

Registriert
14 Juli 2013
Beiträge
3.894
Ort
DE-CIX
OK, dann lassen sich zumindest die Ursprungsdaten wirklich nicht verändern.

Um Deine gewünschten Daten zu berechnen, kannst Du das tun:

PHP:
$array = explode(':', $data);

$users = array();
$passes = array();

for($i = 0; $i < count($array); $i = $i + 2){
	$users[] = $array[$i];
	if($i + 1 < count($array)){
		$passes[] = $array[$i + 1];
	}
}

print_r($users);
print_r($passes);

Ausgabe:
Code:
Array
(
    [0] => foo
    [1] => 1023
    [2] => hi
)
Array
(
    [0] => *
    [1] => 1000
    [2] => a
)

Aber wie gesagt, schöner wäre es doch, wenn Du alle Daten zusammen in einem Array hättest. Beispiel:

PHP:
$array = explode(':', $data);

$users = array();

for($i = 0; $i < count($array) - 1; $i = $i + 2){
	$users[] = array(
		'name' => $array[$i],
		'pass' => $array[$i + 1],
	);
}

print_r($users);

Ausgabe:

Code:
Array
(
    [0] => Array
        (
            [name] => foo
            [pass] => *
        )

    [1] => Array
        (
            [name] => 1023
            [pass] => 1000
        )

    [2] => Array
        (
            [name] => hi
            [pass] => a
        )

)
 

Tone

beobachtet

Registriert
20 Juli 2013
Beiträge
308
  • Thread Starter Thread Starter
  • #5
Ok also direkt in explode ist sowas nicht vorgesehen.


Aber ich stimme dir zu, alles in ein Array ist wirklich schöner.
Danke für die umfangreichen Codebeispiele, dabei ist es mir erstmal richtig aufgefallen, dass ein mehrdimensionales Array hier viel sinnvoller ist.
Ich weiß solche Funktionen immer erst zu schätzen wenn sie mir mal richtig geholfen hat und mehrdimensionale hab ich bis jetzt noch nicht so oft verwendet. Also danke dafür :)
 

Shodan

runs on biochips

Registriert
14 Juli 2013
Beiträge
661
Ort
Citadel Station
praktische Funktion: array_chunk
PHP:
$input = 'foo:bar:x:y';
$delimiter = ':';
$size = 2;

$output = array_chunk(explode($delimiter, $input), $size);
PHP:
$output == array(
  0 => array(
    0 => 'foo',
    1 => 'bar'
  ),
  1 => array(
    0 => 'x',
    1 => 'y'
  ),
)

mit map und combine wandern die keys hinein:

PHP:
$input = 'foo:bar:x:y';
$delimiter = ':';
$keys = array('name', 'pass');

$output = array_map(
  function($values) use ($keys) { return array_combine($keys, $values); },
  array_chunk(explode($delimiter, $input), count($keys))
);

PHP:
$output == array(
  0 => array(
    'name' => 'foo',
    'pass' => 'bar'
  ),
  1 => array(
    'name' => 'x',
    'pass' => 'y'
  )
)

Lang lebe λ :D
 
Zuletzt bearbeitet:

Tone

beobachtet

Registriert
20 Juli 2013
Beiträge
308
  • Thread Starter Thread Starter
  • #7
Cool danke, so eine Funktion hatte ich ursprünglich gesucht!
 
Oben