Domanda PHP per quanto riguarda gli array
-
23-09-2019 - |
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",""