2012-03-30 3 views
0

Ich habe ein Array mit dem Namen $name[] und ein anderes mit dem Namen $content[] Beide Arrays haben gleiche Objekte (3). Das $content[] Array kann 0, 1 oder 2 Nachrichten haben, wie unten zu sehen ist.Wie kombinieren Sie diese beiden Arrays, wenn array_combine nicht die Lösung ist?

Mein Ziel ist es, die $name[0] mit der $content[0] und so weiter zu echo. Der Name wird zuerst und nach den verfügbaren Nachrichten gedruckt. Ich habe versucht, array_combine ohne Glück zu verwenden.

Was ist ein Weg, dies zu tun?

$ name []

Array 
(
    [0] => 
    [1] => 
    [2] => 
) 

$ content []

Array 
(
    [0] => Array 
     (
      [0] => Array 
       (
        [message] => 
       ) 

     ) 

    [1] => Array 
     (
     ) 

    [2] => Array 
     (
      [0] => Array 
       (
        [message] => 
       ) 

      [1] => Array 
       (
        [message] => 
       ) 

     ) 
) 
+0

Sie haben einen Schlüssel Detail ausgelassen: was die kombinierte Array aussehen sollte. Von dem, was Sie beschrieben haben, sollte 'array_combine' die Lösung sein. Was sollte das Ergebnis der Kombination der Sample-Arrays sein? Was ist mit dem Ergebnis von 'array_combine' nicht geeignet? Die Ausgabe von 'var_export' ist nützlicher als' var_dump' für Beispieldaten, da sie gültiges PHP erzeugt. – outis

Antwort

2

Wirklich keine Idee, was Sie versuchen zu tun; Die Frage ist nicht sehr klar. Was ist Ihre erwartete Leistung?

Hier ist mein Stich im Dunkeln:

$count = min(count($name),count($content)); 

for($i=0; $i<$count; ++$i) { 
    echo $name[$i]; 
    foreach($content[$i] as $msg) { 
     echo $msg['message']; 
    } 
} 
+0

Danke Mark für es. Es funktioniert, wie ich es mit ein wenig zwicken möchte. – EnexoOnoma

+0

Alternative Lösung für PHP 5.3+ mit 'MultipleIterator': http://stackoverflow.com/a/14724544/664108 –

1

Wie so?

$name = array(...); 
$content = array(...); 

foreach($content as $k => $v) 
{ 
    if(array_key_exists($k, $name)) 
    echo $name[$k]; 

    if(array_key_exists($k, $content)) 
    echo $content[$k]; 
} 
+0

Was ich bekomme ist der Name und nach * Array *. – EnexoOnoma

+1

@Kaoukkos: Das liegt daran, dass $ content ein Array von Arrays ist. Einfach darüber schleifen. – mpen

Verwandte Themen