Domanda

Sono un php noob (completo) e ho bisogno di un piccolo aiuto con qualcosa.

Sto lavorando a un progetto in base al quale un utente può selezionare fino a 6 categorie tramite un modulo (sto usando ExpressionEngine). L'output è così:

"Cat1","Cat2","Cat3"

...e così via. L'utente può selezionare fino a 6 categorie su quel modulo.

Ciò di cui ho bisogno: anche se il mio risultato è 3 categorie, ho bisogno di avere 6 "celle" - per mancanza di una parola migliore - anche se sono vuoti:

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

Ho provato questo:

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

... ma l'output mi dà:

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

)

Come ottengo da questo a questo:

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

Questo ha senso?

Grazie Martin

Nessuna soluzione corretta

Altri suggerimenti

Se hai un array che contiene 6 elementi, tra cui 3 stringhe vuote:

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

Puoi implode quelli in una stringa, in questo modo:

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

E otterrai il seguente output:

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


Fondamentalmente, implode ti consente di mettere tutti gli elementi dell'array in una stringa, usando un separatore - qui, il separatore è "," Questo è ciò che puoi tra le tue corde.

E, poiché Implode ha messo solo il separatore tra gli elementi, dobbiamo mettere un Aggiungi " all'inizio e alla fine della stringa risultante.


(Spero di aver capito cosa intendevi ...)



Modifica dopo il commento:

Ok, se il tuo $arr L'array non contiene sei elementi all'inizio:

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

Una possibilità potrebbe essere quella di creare un array con elementi vuoti; In questo modo, per esempio:

$count = count($arr);

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

E quindi aggiungili a quelli $arr Vettore :

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

(Potresti anche usare array_merge, Credo)

E, ora, torna al nostro implode :

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

E, questa volta, otterrai:

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


Ecco cosa var_dump($padding); fornisce, per informazioni:

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

E, sì, puoi usare il + operatore con array (citazione) :

Il + L'operatore aggiunge elementi dei tasti rimanenti dall'array destro alla mano sinistra, mentre i tasti duplicati non sono sovrascritti.


Se tuo $arr potrebbe essere più lungo di 6 elementi, potresti usare array_slice Per rimuovere gli elementi non occasionali:

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

Puoi provare:

$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","","",""

Funziona anche quando $org ha 6 o meno gatti:

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

$str sarà "Cat1","Cat2","Cat3","cat4","cat5",""

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top