Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.www.php > #20196 > unrolled thread

aggiungere solo i nuovi elementi ad un array

Started byalex <1j9448a02@lnx159sneakemail.com.invalid>
First post2016-01-11 12:07 +0100
Last post2016-01-18 10:51 +0100
Articles 10 — 4 participants

Back to article view | Back to it.comp.www.php


Contents

  aggiungere solo i nuovi elementi ad un array alex <1j9448a02@lnx159sneakemail.com.invalid> - 2016-01-11 12:07 +0100
    Re: aggiungere solo i nuovi elementi ad un array alex <1j9448a02@lnx159sneakemail.com.invalid> - 2016-01-11 12:44 +0100
      Re: aggiungere solo i nuovi elementi ad un array "ciccio" <21669invalid@mynewsgate.net> - 2016-01-11 15:42 +0000
        Re: aggiungere solo i nuovi elementi ad un array alex <1j9448a02@lnx159sneakemail.com.invalid> - 2016-01-11 17:25 +0100
          Re: aggiungere solo i nuovi elementi ad un array bramante <bramante@yopmail.com> - 2016-01-11 23:39 +0100
            Re: aggiungere solo i nuovi elementi ad un array alex <1j9448a02@lnx159sneakemail.com.invalid> - 2016-01-12 09:02 +0100
              Re: aggiungere solo i nuovi elementi ad un array Leonardo Serni <lserni@gmail.com> - 2016-01-14 14:13 +0100
                Re: aggiungere solo i nuovi elementi ad un array alex <1j9448a02@lnx159sneakemail.com.invalid> - 2016-01-17 10:43 +0100
                  Re: aggiungere solo i nuovi elementi ad un array Leonardo Serni <lserni@gmail.com> - 2016-01-17 18:38 +0100
                    Re: aggiungere solo i nuovi elementi ad un array alex <1j9448a02@lnx159sneakemail.com.invalid> - 2016-01-18 10:51 +0100

#20196 — aggiungere solo i nuovi elementi ad un array

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2016-01-11 12:07 +0100
Subjectaggiungere solo i nuovi elementi ad un array
Message-ID<n702eb$mud$1@gioia.aioe.org>
/**
  * Aggiunge al primo array, i nuovi elementi estratti dal secondo array,
  * In altre parole, aggiunge al primo array, gli elementi contenuti nel 
secondo array,
  * che non sono già presenti nel primo array.
  *
  * @param array $arr1 Il primo array.
  * @param array $arr2 Il secondo array da cui estrarre i nuovi elementi.
  * @return array
  */
function addOnlyNewElements($arr1, $arr2)
{
	$arr = $arr1;

	/*
	 * Estrazione dei nuovi elementi dal secondo array
	 */
	$newElements = array_diff_key($arr2, $arr1);

	foreach ($newElements as $key => $value) {
		$arr[$key] = $value;
	}

	return $arr;
}

Ma non è che esiste una funzione php nativa (già pronta) per fare quanto 
illustrato?

[toc] | [next] | [standalone]


#20197

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2016-01-11 12:44 +0100
Message-ID<n704j1$veb$1@gioia.aioe.org>
In reply to#20196
Il 11/01/2016 12:07, alex ha scritto:
> /**
>   * Aggiunge al primo array, i nuovi elementi estratti dal secondo array,
>   * In altre parole, aggiunge al primo array, gli elementi contenuti nel
> secondo array,
>   * che non sono già presenti nel primo array.
>   *
>   * @param array $arr1 Il primo array.
>   * @param array $arr2 Il secondo array da cui estrarre i nuovi elementi.
>   * @return array
>   */
> function addOnlyNewElements($arr1, $arr2)
> {
>      $arr = $arr1;
>
>      /*
>       * Estrazione dei nuovi elementi dal secondo array
>       */
>      $newElements = array_diff_key($arr2, $arr1);
>
>      foreach ($newElements as $key => $value) {
>          $arr[$key] = $value;
>      }
>
>      return $arr;
> }
>
> Ma non è che esiste una funzione php nativa (già pronta) per fare quanto
> illustrato?

forse basta solo

return $arr1 + $arr2;

possibile che sia così semplice, o mi sfugge qualcosa?
o_O

[toc] | [prev] | [next] | [standalone]


#20198

From"ciccio" <21669invalid@mynewsgate.net>
Date2016-01-11 15:42 +0000
Message-ID<2016011115423321669@mynewsgate.net>
In reply to#20197
alex <1j9448a02@lnx159sneakemail.com.invalid> ha scritto:

CUT
> > Ma non è che esiste una funzione php nativa (già pronta) per fare quanto
> > illustrato?
> 
> forse basta solo
> 
> return $arr1 + $arr2;
> 
> possibile che sia così semplice, o mi sfugge qualcosa?
> o_O

Si può fare anche tramite funzioni native:

array_unique(array_merge($a, $b));

[toc] | [prev] | [next] | [standalone]


#20199

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2016-01-11 17:25 +0100
Message-ID<n70l2g$qai$1@gioia.aioe.org>
In reply to#20198
Il 11/01/2016 16:42, ciccio ha scritto:
> alex <1j9448a02@lnx159sneakemail.com.invalid> ha scritto:
>
> CUT
>>> Ma non è che esiste una funzione php nativa (già pronta) per fare quanto
>>> illustrato?
>>
>> forse basta solo
>>
>> return $arr1 + $arr2;
>>
>> possibile che sia così semplice, o mi sfugge qualcosa?
>> o_O
>
> Si può fare anche tramite funzioni native:
>
> array_unique(array_merge($a, $b));
>
>

print_r(array_unique(array_merge(
     array(0),
     array(1,2)
)));

l'elemento *[1] => 1* non ci dovrebbe essere però

Array
(
     [0] => 0
     [1] => 1
     [2] => 2
)

cioè si dovrebbe avere

Array
(
     [0] => 0
     [1] => 2
)

[toc] | [prev] | [next] | [standalone]


#20200

Frombramante <bramante@yopmail.com>
Date2016-01-11 23:39 +0100
Message-ID<n71b0h$npj$1@gioia.aioe.org>
In reply to#20199
Il 11/01/2016 17:25, alex ha scritto:
> Il 11/01/2016 16:42, ciccio ha scritto:
>> alex <1j9448a02@lnx159sneakemail.com.invalid> ha scritto:
>>
>> CUT
>>>> Ma non è che esiste una funzione php nativa (già pronta) per fare
>>>> quanto
>>>> illustrato?
>>>
>>> forse basta solo
>>>
>>> return $arr1 + $arr2;
>>>
>>> possibile che sia così semplice, o mi sfugge qualcosa?
>>> o_O
>>
>> Si può fare anche tramite funzioni native:
>>
>> array_unique(array_merge($a, $b));
>>
>>
>
> print_r(array_unique(array_merge(
>      array(0),
>      array(1,2)
> )));
>
> l'elemento *[1] => 1* non ci dovrebbe essere però
>
> Array
> (
>      [0] => 0
>      [1] => 1
>      [2] => 2
> )
>
> cioè si dovrebbe avere
>
> Array
> (
>      [0] => 0
>      [1] => 2
> )
>


prova

print_r(array_unique(array_merge(
       array('0'=>'0'),
       array('1'=>'2')
  )));

Ciao

[toc] | [prev] | [next] | [standalone]


#20201

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2016-01-12 09:02 +0100
Message-ID<n72bto$1vf$1@gioia.aioe.org>
In reply to#20200
Il 11/01/2016 23:39, bramante ha scritto:
>
> print_r(array_unique(array_merge(
>        array('0'=>'0'),
>        array('1'=>'2')
>   )));


a parte che il cable-into-code è ormai spesso una tecnica sconsigliata, 
suppongo quindi che tu sappia che esistono anche le variabili (concetto 
di flessibilità)

print_r(array_unique(array_merge(
       $arr1,
       $arr2
  )));

ad ogni modo il post iniziale lo avete studiato?

[toc] | [prev] | [next] | [standalone]


#20206

FromLeonardo Serni <lserni@gmail.com>
Date2016-01-14 14:13 +0100
Message-ID<mu6f9bp80avfq05sinke5o91q8s8vt08ho@L.Serni>
In reply to#20201
On Tue, 12 Jan 2016 09:02:00 +0100, alex <1j9448a02@lnx159sneakemail.com.invalid> wrote:

>a parte che il cable-into-code è ormai spesso una tecnica sconsigliata, 
>suppongo quindi che tu sappia che esistono anche le variabili (concetto 
>di flessibilità)

Sai una cosa: quando leggo toni come questo, ho sempre l'impressione di
trovarmi davanti a qualcuno che ne sa molto, ma molto più di me.

Sicché calcolo che sia molto probabile che il problema descritto sia al
di là della mia comprensione. E quando pure non lo fosse, sarebbe molto
difficile per me contribuire con qualcosa di utile e farei solo perdere
tempo all'interlocutore, e a tutti i lettori.

Così in questi casi, per risparmiarmi tempo e umiliazioni, tiro dritto.

>print_r(array_unique(array_merge(
>       $arr1,
>       $arr2
>  )));

> ad ogni modo il post iniziale lo avete studiato?

Dipende... non al livello di poterci sostenere un esame.

Ma hai chiesto: "In altre parole, aggiunge al primo array, gli elementi
contenuti nel secondo array, che non sono già presenti nel primo array"

$arr1 = [ 1 => "array 1", 2 => "array 1" ];
$arr2 = [ 1 => "array 2", 3 => "array 2" ];

Quindi in questo caso 1 e 2 devono rimanere "array 1", e ci deve essere
aggiunto solo l'elemento 3.

Mi sembra che ti potrebbe bastare array_replace:

	$arr = array_replace($arr2, $arr1);

print_r(array_replace($arr2, $arr1));

Array
(
    [1] => array 1
    [3] => array 2
    [2] => array 1
)

Se li vuoi in ordine (prima tutti gli elementi di $arr1, ecc.):

	array_replace($arr1, $arr2, $arr1);

Leonardo

-- 

Now suppose -just suppose- I could show you a way to
manufacture a wall that would do the same job... but
was only one inch thick.

[toc] | [prev] | [next] | [standalone]


#20219

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2016-01-17 10:43 +0100
Message-ID<n7fnn7$11s8$1@gioia.aioe.org>
In reply to#20206
Il 14/01/2016 14:13, Leonardo Serni ha scritto:
>> >ad ogni modo il post iniziale lo avete studiato?
> Dipende... non al livello di poterci sostenere un esame.
>

Bisogna studiare solo per dare esami?
Forse un po' riduttivo, direi...

> Ma hai chiesto: "In altre parole, aggiunge al primo array, gli elementi
> contenuti nel secondo array, che non sono già presenti nel primo array"
>
> $arr1 = [ 1 => "array 1", 2 => "array 1" ];
> $arr2 = [ 1 => "array 2", 3 => "array 2" ];
>
> Quindi in questo caso 1 e 2 devono rimanere "array 1", e ci deve essere
> aggiunto solo l'elemento 3.
>

Esatto

> Mi sembra che ti potrebbe bastare array_replace:
>
> 	$arr = array_replace($arr2, $arr1);
>
> print_r(array_replace($arr2, $arr1));
>
> Array
> (
>      [1] => array 1
>      [3] => array 2
>      [2] => array 1
> )
>

OK

[toc] | [prev] | [next] | [standalone]


#20222

FromLeonardo Serni <lserni@gmail.com>
Date2016-01-17 18:38 +0100
Message-ID<prjn9bta92faajfrku6gj3tt8nl0f3as2a@L.Serni>
In reply to#20219
On Sun, 17 Jan 2016 10:43:00 +0100, alex <1j9448a02@lnx159sneakemail.com.invalid> wrote:

>Il 14/01/2016 14:13, Leonardo Serni ha scritto:
>>> >ad ogni modo il post iniziale lo avete studiato?
>> Dipende... non al livello di poterci sostenere un esame.

>Bisogna studiare solo per dare esami?

Non avevo detto questo. Comunque, dato che me lo chiedi: sì.

Se alla fine non c'è un esame (anche solo auto-erogato: il risponderti "Sì" con la
sicurezza di dire il vero, anziché tanto per fare), studiare non è un «bisogno».

> Forse un po' riduttivo, direi...

Dipende da come uno definisce "esame" :-)

Leonardo

-- 

Now suppose -just suppose- I could show you a way to
manufacture a wall that would do the same job... but
was only one inch thick.

[toc] | [prev] | [next] | [standalone]


#20225

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2016-01-18 10:51 +0100
Message-ID<n7icif$16eg$1@gioia.aioe.org>
In reply to#20222
Il 17/01/2016 18:38, Leonardo Serni ha scritto:
> On Sun, 17 Jan 2016 10:43:00 +0100, alex <1j9448a02@lnx159sneakemail.com.invalid> wrote:
>
>> Il 14/01/2016 14:13, Leonardo Serni ha scritto:
>>>>> ad ogni modo il post iniziale lo avete studiato?
>>> Dipende... non al livello di poterci sostenere un esame.
>
>> Bisogna studiare solo per dare esami?
>
> Non avevo detto questo. Comunque, dato che me lo chiedi: sì.
>

ah però....

> Se alla fine non c'è un esame (anche solo auto-erogato: il risponderti "Sì" con la
> sicurezza di dire il vero, anziché tanto per fare), studiare non è un «bisogno».
>

mmmhhh... anni passati a studiare economia aziendale/politica... forse 
non ci ho capito niente sui bisogni primari, secondari, terziari: 
cultura, studio, ricerca...

>> Forse un po' riduttivo, direi...
>
> Dipende da come uno definisce "esame" :-)

può essere inteso come analisi, valutazione, studio, *esame* di un 
problema (non per forza scolastico) al fine di trovare una soluzione.
La prossima volta che dovrò risolvere un problema, mi metto a ballare 
con la bottiglia di vodka in mano, invece di studiare, che dici?

[toc] | [prev] | [standalone]


Back to top | Article view | it.comp.www.php


csiph-web