Frage

Ich bin ein (vollständiger) PHP Noob und brauche ein wenig Hilfe bei etwas.

Ich arbeite an einem Projekt, bei dem ein Benutzer über ein Formular bis zu 6 Kategorien auswählen kann (ich verwende ExpressionEngine). Die Ausgabe ist so:

"Cat1","Cat2","Cat3"

...usw. Der Benutzer kann bis zu 6 Kategorien in diesem Formular auswählen.

Was ich brauche: Auch wenn mein Ergebnis 3 Kategorien ist, muss ich 6 'Zellen' haben - aus Mangel an besserem Wort - auch wenn sie leer sind:

"Cat1","Cat2","Cat3","","",""

Ich habe das versucht:

<?php
$str = '(output goes here)';
print_r(explode(',', $str, 6));
?>

... aber die Ausgabe gibt mir:

Array
(
[0] => Cat1
[1] => Cat2
[2] => Cat3
[3] =>
[4] =>
[5] =>

)

Wie bekomme ich davon:

"Cat1","Cat2","Cat3","","",""

Macht das Sinn?

Danke Martin

Keine korrekte Lösung

Andere Tipps

Wenn Sie ein Array haben, das 6 Elemente enthält, darunter 3 leere Zeichenfolgen:

$arr = array('cat1', 'cat2', 'cat3', '', '', '');

Du kannst implode Diese in eine Zeichenfolge auf diese Weise:

echo '"' . implode('","', $arr) . '"';

Und Sie erhalten die folgende Ausgabe:

"cat1","cat2","cat3","","",""


Grundsätzlich, implode Ermöglicht es Ihnen, alle Elemente des Arrays mit einem Trennzeichen in eine Zeichenfolge einzulegen - hier ist der Trennzeichen "," Welches ist, was Sie zwischen Ihren Saiten können.

Und wie imploded nur das Trennzeichen zwischen den Elementen einfügt, müssen wir eine Addition einsetzen " Am Anfang und am Ende der resultierenden Zeichenfolge.


(Ich hoffe, ich habe verstanden, was du gemeint hast ...)



Bearbeiten nach dem Kommentar:

OK, wenn deine $arr Array enthält am Anfang nicht sechs Elemente:

$arr = array('cat1', 'cat2', 'cat3');

Eine Möglichkeit könnte darin bestehen, ein Array mit leeren Elementen zu erstellen; Zum Beispiel: zum Beispiel:

$count = count($arr);

// Create an array with empty elements
$padding = array_fill($count, 6-$count, '');
var_dump($padding);

Und dann diese zu dem hinzufügen $arr Array:

// Add the empty elements to $arr
$arr = $arr + $padding;

(Sie können auch verwenden array_merge, Ich nehme an)

Und jetzt zurück zu unserem implode :

echo '"' . implode('","', $arr) . '"';

Und diesmal Sie noch einmal:

"cat1","cat2","cat3","","",""


Hier ist was die var_dump($padding); gibt Informationen zur Verfügung:

array
  3 => string '' (length=0)
  4 => string '' (length=0)
  5 => string '' (length=0)

Und ja, Sie können die verwenden + Bediener mit Arrays (zitieren) :

Das + Der Bediener findet Elemente der verbleibenden Schlüssel vom rechten Array nach links an, während duplizierte Schlüssel nicht überschrieben werden.


Wenn dein $arr Könnte länger als 6 Elemente sein, Sie könnten verwenden array_slice Um die nicht gewünschten Elemente zu entfernen:

$arr = array('cat1', 'cat2', 'cat3', '', '', '', '');
$arr = array_slice($arr, 0, 6);
echo '"' . implode('","', $arr) . '"';

Du kannst es versuchen:

$org = '"Cat1","Cat2","Cat3"';
$arr = explode(',',$org);
$arr = array_merge($arr,array_fill(count($arr),6-count($arr),'""'));
$str = implode(',',$arr);
echo($str); // prints "Cat1","Cat2","Cat3","","",""

Funktioniert auch wann $org hat 6 oder weniger Katzen:

Wenn $org = "Cat1","Cat2","Cat3","cat4","cat5"

$str wird sein "Cat1","Cat2","Cat3","cat4","cat5",""

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top