Newsgroup: it.comp.www.php
Titolo: problema con array_marge quando un array e' vuoto.

Salve a tutti
Ho tre array:
$array_1[];
$array_2[];
$array_3[];
e utilizzo array_marge per unirli:
array_marge($array_1, $array_2, $array_3);
il problema e' che il contenuto dei tre array e' dinamico e spesso uno
due o tutti possono essere vuoi e quando vado a fare array_marge ho un
errore.
In precedenza, faccio il controllo con is_array(), ma come faccio a
escludere dalla lista di array_marge un array che non esiste? Mi ci
vorrebbe che il contenuto di array_marge (cioe' quello che sta tra
parentesi) fosse una variabile che posso riempire solo con gli array
"pieni".
Avete un'idea?
Grazie.
 
-- 
I'm using an evaluation license of nemo since 158 days.
You should really try it!
http://www.malcom-mac.com/nemo

 escludere dalla lista di array_marge un array che non esiste? 
Che cosa intendi per "un array che non esiste"?
E' il contenuto degli array ad essere dinamico oppure gli array stessi?
Hai provato con 
http://www.php.net/is_set
 ?
-- 
Vuoi distribuire il tuo sito web su CD/DVD?
Prova 
http://www.dwebpro.com/
Vuoi diventare un esperto analista PHP/MySQL?
Vieni a fare uno stage con noi: 
http://www.creativepark.it/stage/

  Quale errore ottieni?
Ho nella funzione array_marge() ho 6 array e il quarto e' vuoto;
questo e' il messaggio che leggo nel log di errore: [Mon Jan 28
18:19:25 2008] [error] [client 192.100.50.87] PHP Warning:
array_merge() [function.array-merge]: Argument #4 is not an array in
/home/lauciani/public_html/earthworm/functions2.php on line 681


 /home/lauciani/public_html/earthworm/functions2.php on line 681
L'errore dice che il 4 argomento NON e' un array. Utilizzando
http://www.php.net/is_array
 dovresti essere in grado di intercettarlo
prima di passarlo ad 
http://www.php.net/array_merge


 intercettarloprima di passarlo ad 
http://www.php.net/array_merge
Il problema e' proprio questo!
Io uso is_array(), intercetto che non e' un array (mediante if), ma
poi come lo escludo "dinamicamente" dalla funzione array_merge()?
Non so se mi sono spiegato, ci provo con un esempio.
AL termine del mio codice ho:
array_marge($array_1, $array_2, $array_3);
Il problema e' che tutti e tre gli array sono frutto di una query al
DB che effettua l'utente con un form dinamicamente; i tre array
($array_1, $array_2, $array_3) pero', non e' detto che siano
inizializzati (perche' la query puo' restituire niente). Quindi,
ponendo per esempio che la query per l'array_2 non restituisca nulla,
se io faccio:is_array($array_2))
giustamente mi dice che non e' un array... ma io pero', nella funzione
array_marge(), $array_2 l'ho inserito e quindi ottengo un errore.
Quello che mi piacerebbe, e' poter creare dinamicamente la stringa tra
le parentesi di $array_marge(); in questo modo, avrei la possibilta'
di passargli solo gli array che ho inizializzato. Una sorta
di:$pippo="$array_1 $array_3";
$array_marge($pippo); // che pero' non funziona..... ;-)
Mi sono spiegato? ;-)
Grazie per la pazienza.
 
-- 
I'm using an evaluation license of nemo since 159 days.


 Grazie per la pazienza.
there is more than one way to do it..
merge(A, B, C) = merge(A, merge(B, merge(C)))..
A = merge(A, empty_array)..
-- 
www.iuz-lab.info

inizializzati (perche' la query puo' restituire niente).
$finale = array();
if (is_array($arrai))   $finale = array_merge($finale, $arrai);
if (is_array($arrasti)) $finale = array_merge($finale, $arrasti);
if (is_array($arrò))    $finale = array_merge($finale, $arrò);
oppure se proprio ne hai solo tre
	$finale = array_merge(
		is_array($array1) ? $array1 : array(),
		is_array($array2) ? $array2 : array(),
		is_array($array3) ? $array3 : array()
	);
Leonardo TMTOWTDI
-- 
While ordinarily valid that being widespread does not make a statement
true, I feel that the diffusion of anti-evolutionary beliefs does pose
a strong argument for Darwin having been, indeed, sorely mistaken.

there is more than one way to do it..
Argh :-O
Telepatia :-)
Leonardo


 come lo escludo "dinamicamente" dalla funzione array_merge()?
Fai a meno di escluderlo:
!is_array($array1) or $array1 = array();
!is_array($array2) or $array2 = array();
!is_array($array3) or $array3 = array();
$res = array_merge($array1, $array2, $array3);
Bye.

 array(); !is_array($array3) or $array3 = array();
Scusa, ho messo i ! di troppo, e in piu` pan mi ha sputtanato il layout 
mischiando le righe... :/
is_array($array1) or $array1=array();
ecc. ecc.
Bye.

 is_array($array1) or $array1=array();
Della serie, complichiamoci la vita:
<pre>
<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);
$array_1 = array(1, 2, 3);
$array_2 = '4, 5, 6';
$array_3 = false;
$array_4 = array('a', 'b', 'c');
// $array_5 = null; // not set
$array_6 = '';
$result = array_merge(
  isset($array_1) && is_array($array_1) ? $array_1 : array(),
  isset($array_2) && is_array($array_2) ? $array_2 : array(), 
  isset($array_3) && is_array($array_3) ? $array_3 : array(), 
  isset($array_4) && is_array($array_4) ? $array_4 : array(), 
  isset($array_5) && is_array($array_5) ? $array_5 : array(), 
  isset($array_6) && is_array($array_6) ? $array_6 : array()
 );
 
print_r($result);
?>
</pre>


  );
A questo punto, se si sa il numero massimo di array che potrebbero
esserci, si fa prima a ciclare... o no? :-)



loop unrolling..
-- 
www.iuz-lab.info