[PHP] Array + foreach Probleme **erledigt**

strolch00

redraft.de
ID: 155297
L
21 April 2006
1.684
72
Hi @all;

ich habe folgendes Array:
PHP:
array('css' => ''
, 1 => 'Germany'
, 2 => 'Amerika'
, 3 => array('France', 1)
, 4 => 'Russian'
, 6
, 8
, 9
, 10 => 'Great Britain'
, 15)
jetzt bekomme ich mit print_r aber folgende Ausgabe:
Code:
Array
(
    [css] => 
    [1] => Array
        (
            [0] => Germany
            [1] => 1
        )

    [2] => Amerika
    [3] => France
    [4] => Russian
    [5] => 6
    [6] => 8
    [7] => 9
    [11] => Great Britain
    [19] => 15
)
Wenn ich das mit ner foreach durch gehen will sollen aber dort wo keine Werte angegeben wurden die Keys in die Ausgabe rein. Wie könnte ich das lösen? Google usw bringen mich net weiter.

Ich möchte einfach nur vermeiden immer dieses " => '' " zu schreiben, weil das voll nervig ist und ich hoffe mal es ist machbar. Aber ich bin voll ratlos.
 
Zuletzt bearbeitet:
Öhm.. du willst die Ausgabe von print_r modifizieren.. oder bei foreach? Für foreach wüsste ich eine Lösung.. für print_r müsstest du dir eventuell selber was schreiben.
 
Dass der Code oben die Ausgabe bringt, die du postest, glaub ich nicht wirklich.
Auch hab ich deine Frage überhaupt ned verstanden, was du wissen willst :hö:

Ich schieß mal ins Blaue:
  • print_r() hat einen zweiten Parameter, der ab PHP v4.3 auf true gesetzt, dir die Ausgabe als Rückgabewert liefert. Du kannst dann bearbeiten, wenn du willst.
  • foreach() in der Form foreach($array as $key=>$value) benutzen, dann kriegst du die Array-Keys.
Is nix dabei, schreib mal nochmal, was du wissen willst.
 
Ja sorry ihr habt recht das war net ganz richtig. Hier das richtige.
Ausgabe:
Code:
Array
(
    [css] => 
    [1] => Germany
    [2] => Amerika
    [3] => Array
        (
            [0] => France
            [1] => 1
        )

    [4] => Russian
    [5] => 63
    [6] => 81
    [7] => 9
    [10] => Great Britain
    [11] => 167
)
array:
PHP:
array('css' => ''
, 1 => 'Germany'
, 2 => 'Amerika'
, 3 => array('France', 1)
, 4 => 'Russian'
, 63
, 81
, 9
, 10 => 'Great Britain'
, 167)

Ich nutze den Key des Aarray´s für ein HTML Element als Value und das Value des Array´s als Beschriftung des HTML Element´s. Wenn es jetzt im Array kein Value in der Art => '' gibt wird der eigentliche Key zum Value. Wie könnte ich das jetzt checken um dann den Array`s Value für beides zu nutzen?

Als Beispielan zwei Elementen(so soll es dannaussehen):
HTML:
  <option value="4">Russian</option>
  <option value="63">63</option>

Hoffe das es jetzt jeder Verstanden hat besser kann ich es erklären.:-?
 
Hoffe das es jetzt jeder Verstanden hat besser kann ich es erklären.:-?
Nach zweimaligen Durchlesen hab ichs jetzt kapiert. (Du hast einmal Key und Value vertauscht)

Ich würd sagen, es sieht so schlecht aus. Du kannst nicht unterscheiden, ob du jetzt den numerischen Index vergeben hast oder ob PHP mangels Index automatisch einen verwenden hat.
Um das zu unterscheiden, müsstest du entweder nicht-numerische Arrayindezes verwenden - was nicht in Frage kommt - oder noch zusätzliche Daten in das Array speichern. z.B. der Form
Code:
Array
(
    [0] => Array
        (
            [description] => Germany
            [value] => 1
        )
    [1] => 63
    ...
)
Im Prinzip also, dass der erste Index irrelevant ist und du nur mit foreach durchiterierst und die eigentliche Info in der zweiten Dimension steht:
PHP:
foreach($array as $optionrow)
{
  if(is_array($optionrow))
  {
    $value=$optionrow['value'];
    $description=$optionrow['description'];
  }
  else
    $value=$description=$optionrow;

  echo "<option value=\"$value\">$description</option>";
}
HTML:
<option value="1">Germany</option>
<option value="63">63</option>
 
Danke @theHacker dann geht es eben nicht anders den Array nochmal verschachteln werde ich nicht, das finde ich so schon kompliziert genug.

Also danke nochmal auch wenn ich sowas schon befürchtet hatte.