• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Array Problem

Hallo,

ich habe jetzt ein Problem, irgendwie gibt er mir bei $id, genau das aus, was bei $string2 auch zu sehen ist und bei $km nur eine 0. Warum und wo ist der Fehler?

PHP:
$string2 = '"28,4" => "1", "1,6" => "2", "24,2" => "3", "28,0" => "4"';
$arr = array( $string2 );
foreach( $arr as $km => $id )
{
   echo $km."<br><br>"; echo $id;  
}
 
Zuletzt bearbeitet:
Werbung:
Das Problem ist, dass du dem Array einen String übergibst. Dann hast du ein numerisches Array mit einem Eintrag.
Was du machen willst ist.
PHP:
 $arr = array("28,4" => "1", "1,6" => "2"); // usw.
So funktioniert auch deine foreach Schleife dann.
Um die Werte zu sortieren benutzt man am besten PHP: usort - Manual
Schau dir da das Beispiel mit den Früchten an :)
 
Hallo, danke. Das mit dem Sortieren habe ich hinbekommen, nur das Problem ist, dass ich es so machen muss, mit diesem $string, da das von der Datenbank ausgelesen wird. Hab den $string für dieses Beispiel selber mal einfach hingeschrieben, wie es aussehen würde, wenn man echo $string; macht (Da es von der Datenbank kommt. Und genau so $string2 = '"28,4" => "1", "1,6" => "2", "24,2" => "3", "28,0" => "4"'; aussieht.

Hab es jetzt einfach mit $array[$id] = $key; gemacht
 
Zuletzt bearbeitet:
Werbung:
Kannst dir das sonst zurechtparsen.

PHP:
<?php

function stringToArray($s)
{
    $parts = preg_split('/(\s*"[^"]*"\s*=>\s*"[^"]*"\s*(?:,|$))/', $s, -1,
            PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);

    array_walk($parts, function (&$e) { $e = trim(trim($e), ','); });

    $data = array();

    foreach ($parts as $part) {
        $splitted = explode('=>', $part);
        $key = preg_replace('/[\s"]+(.*?)[\s"]+/', '$1', $splitted[0]);
        $value = preg_replace('/[\s"]+(.*?)[\s"]+/', '$1', $splitted[1]);

        $data[$key] = $value;
    }
    
    return $data;
}

$string2 = '"28,4" => "1", "1,6" => "2", "24,2" => "3", "28,0" => "4"';

$data = stringToArray($string2);

print_r($data);

Code:
Array
(
    [28,4] => 1
    [1,6] => 2
    [24,2] => 3
    [28,0] => 4
)
 
Zurück
Oben