2017-10-02 3 views
0

Ich habe das folgende Beispiel für Array-Ausgabe. Ich muss eine Möglichkeit finden, dieses Array in eine Zeichenfolge zu konvertieren oder die E-Mails in einer organisierten Weise auszugeben. Ich habe versucht, zu implodieren, aber ich bekomme nur eine "Array" -Ausgabe. Bitte helfen Sie!Wie drucke ich ein mehrdimensionales Array, das mit der Tiefe in PHP variiert?

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

      [1] => Array 
       (
        [0] => [email protected] 
       ) 

      [2] => Array 
       (
        [0] => [email protected] 
       ) 

      [3] => Array 
       (
        [0] => [email protected] 
       ) 

      [4] => Array 
       (
        [0] => [email protected] 
       ) 

      [5] => Array 
       (
        [0] => [email protected] 
       ) 

     ) 

) 
+1

Was die erwartete Ausgabe ist, und was haben Sie bisher versucht. – Federkun

+2

Warum gibt es ein einzelnes Array mit nur einem Element, das ein anderes Array mit 6 Arrays ist? Wenn Sie dies kontrollieren, ändern Sie es. – PHPglue

+0

@Christy Ich verstehe, dass Sie PHPExcel verwenden, gibt es eine Chance, Sie könnten uns einen Pastebin des Codes zeigen, den Sie für die Extraktion verwenden? Es erscheint merkwürdig, dass es so eine Ausgabe erzeugen würde. – JustCarty

Antwort

2
for ($i = 0; $i < count($arr[0]); $i++) { 
    for ($j = 0; $j < count($arr[0][$i]); $j++) { 
     echo $arr[0][$i][$j]; 
    } 
} 

Der obige Ausgang jeder Kette des Arrays.
Die einzige Frage, die ich habe, ist, warum Sie einzelne Strings so tief in einem Array speichern? Vielleicht könnten wir mehr vom Code sehen?

Der Code unten wäre einfacher für das, was Sie zur Verfügung gestellt:

$arr[] = "Email"; 
$arr[] = "[email protected]"; 
$arr[] = "[email protected]"; 
$arr[] = "[email protected]"; 
$arr[] = "[email protected]"; 
$arr[] = "[email protected]"; 

for ($i = 0; $i < count($arr); $i++) { 
    echo $arr[$i]; 
} 

Noch besser, verwenden Sie Array-Schlüssel statt:

$arr["Email"][] = "[email protected]"; 
$arr["Email"][] = "[email protected]"; 
$arr["Email"][] = "[email protected]"; 
$arr["Email"][] = "[email protected]"; 
$arr["Email"][] = "[email protected]"; 

for ($i = 0; $i < count($arr["Email"]); $i++) { 
    echo $arr["Email"][$i]; 
} 
+0

Sie sind fantastisch! Das hat funktioniert. Ich verwende phpexcel, um eine Spalte von einem importierten Excel-Dokument zu lesen. mit diesem Code: $ lead_email_array [] = $ excelObj-> setActiveSheetIndex (0) -> rangeToArray ($ selected_lead_email); – Christy

+0

@Christy Ah, das würde die Rogue "Email" am Anfang des Arrays erklären. Ich freue mich, dass Sie eine funktionierende Lösung gefunden haben :) – JustCarty

0

Sie können das Array ein Niveau reduzieren und dann eine foreach Schleife erstellen Dadurch können Sie sie organisieren und jedes einzelne Element drucken, wie Sie möchten.

Die array_reduce sparen Sie vor dem Erstellen einer zweiten Schleife, und die Dinge für Sie einfacher zu machen, nimmt auch weniger Rechenleistung. Ich habe das von here.

<?php 
// reduce array 
array_reduce($array, 'array_merge', []); 
// create the loop 
foreach ($array as $k => $v) 
{ 
    // this will print the emails in a list format 
    echo '<li>' . $v . '</li>'; 
} 
?> 
0

Eine andere Lösung, wenn einige Arrays tiefer gehen als andere, ist die Verwendung einer rekursiven Druckfunktion. Auf diese Weise wird durch jeden Wert iteriert, und wenn der Wert ein Array ist, wiederholt es den Prozess mit diesem neuen Array util findet etwas zu drucken, das kein Array ist.

$data = array(array(array("Email"),array("[email protected]"),array("[email protected]")),array("[email protected]")); 

function recursivePrint($array) { 
    foreach($array as $value) { 
     if (gettype($value) === 'array') { 
      recursivePrint($value); 
     } else { 
      print($value . ", "); 
     } 
    } 
} 

recursivePrint($data); 
0

Ist dies das einzige Array, das Sie verwenden müssen? Wird es in der Zukunft noch andere Arrays geben? Implodieren funktioniert nur für Einzelteile im gleichen Array Geschwister, so müssen Sie so etwas wie:

<?php 

$array = array(
    "[email protected]", 
    "[email protected]", 
    "[email protected]", 
    "[email protected]", 
    "[email protected]" 
); 

$result = implode(',', $array); 

echo $result; 
// [email protected],[email protected],[email protected],[email protected],[email protected]