<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ciarpame {.com} &#187; array</title>
	<atom:link href="http://www.ciarpame.com/tag/array/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ciarpame.com</link>
	<description>Useful stuffs for the masses. Useless things for few.</description>
	<lastBuildDate>Tue, 01 Dec 2009 13:03:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4-alpha</generator>
		<item>
		<title>Ordinare un array multidimensionale e più array in PHP</title>
		<link>http://www.ciarpame.com/2008/10/24/ordinare-un-array-multidimensionale-e-piu-array-in-php/</link>
		<comments>http://www.ciarpame.com/2008/10/24/ordinare-un-array-multidimensionale-e-piu-array-in-php/#comments</comments>
		<pubDate>Fri, 24 Oct 2008 07:00:25 +0000</pubDate>
		<dc:creator>Mattia Palugan</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.ciarpame.com/?p=257</guid>
		<description><![CDATA[Tutte le funzioni che abbiamo visto nel post precedente servono ad ordinare un array monodimensionale. Per ordinare un array multidimensionale o più array contemporaneamente si può utilizzare la funzione array_multisort. Questa funzione restituisce TRUE o FALSE in base al successo o meno dell&#8217;ordinamento e mantiene le chiavi se non sono numeriche. Accetta un numero flessibile [...]]]></description>
			<content:encoded><![CDATA[<p>Tutte le funzioni che abbiamo visto nel post precedente servono ad ordinare un array monodimensionale. Per ordinare un array multidimensionale o più array contemporaneamente si può utilizzare la funzione <a href="http://it.php.net/manual/it/function.array-multisort.php" target="_blank">array_multisort</a>.<br /><span id="more-257"></span></p>
<p>Questa funzione restituisce TRUE o FALSE in base al successo o meno dell&#8217;ordinamento e mantiene le chiavi se non sono numeriche. Accetta un numero flessibile di parametri. Il primo parametro deve essere un array e quelli seguenti possono essere array o metodi di ordinamento (SORT_ASC per ordinare in ordine crescente, SORT_DESC per l&#8217;ordine decrescente e i metodi che abbiamo già visto SORT_REGULAR, SORT_NUMERIC e SORT_STRING).</p>
<p>Nel primo esempio vediamo come ordinare più array contemporaneamente:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$arr1</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">3</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">4</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$arr2</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'a'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'b'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'c'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'d'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'e'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">array_multisort</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$arr1</span><span style="color: #339933;">,</span><span style="color: #000088;">$arr2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Il primo array quindi sarà ordinato in questo modo 2, 2, 3, 4 e 5 e il secondo in questo modo &#8216;b&#8217;, &#8216;c&#8217;, &#8216;a&#8217;, &#8216;d&#8217; e &#8216;e&#8217;. Praticamente viene effettuato l&#8217;ordinamento del primo array e quando ci sono degli elementi uguali (nell&#8217;esempio il 2) si effettua l&#8217;ordinamento in base all&#8217;elemento con lo stesso indice del secondo array.</p>
<p>Per ordinare un array multidimensionale il ragionamento è il medesimo. Ecco un esempio:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$arr</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
		<span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">3</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">4</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
		<span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'a'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'b'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'c'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'d'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'e'</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">array_multisort</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$arr</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #000088;">$arr</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Il risultato sarà come quello dell&#8217;esempio precedente, cioè il primo sotto-array sarà uguale al primo array dell&#8217;esempio precedente e il secondo sotto-array sarà uguale al secondo dell&#8217;esempio precedente.</p>
<p>Quindi si può dedurre che la funzione array_multisort è molto simile all&#8217;ORDER BY di SQL.<br />
Ecco una query di esempio:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> nome<span style="color: #66cc66;">,</span>cognome <span style="color: #993333; font-weight: bold;">FROM</span> utenti <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> cognome <span style="color: #993333; font-weight: bold;">DESC</span><span style="color: #66cc66;">,</span>nome <span style="color: #993333; font-weight: bold;">ASC</span></pre></div></div>

<p>È uguale a questo script in PHP:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$utenti</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
		<span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'nome'</span><span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #0000ff;">'Pippo'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'cognome'</span><span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #0000ff;">'Baudo'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
		<span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'nome'</span><span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #0000ff;">'Mickey'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'cognome'</span><span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #0000ff;">'Mouse'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
		<span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'nome'</span><span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #0000ff;">'Paolino'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'cognome'</span><span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #0000ff;">'Paperino'</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$cognomi</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$nomi</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$utenti</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$k</span><span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$cognomi</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$k</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$v</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'cognome'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$nomi</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$k</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$v</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'nome'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #990000;">array_multisort</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cognomi</span><span style="color: #339933;">,</span>SORT_DESC<span style="color: #339933;">,</span>SORT_STRING<span style="color: #339933;">,</span> <span style="color: #000088;">$nomi</span><span style="color: #339933;">,</span>SORT_DESC<span style="color: #339933;">,</span>SORT_STRING<span style="color: #339933;">,</span> <span style="color: #000088;">$utenti</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>L&#8217;array <em>$utenti </em>sarà ordinato prima in modo decrescente in base ai cognomi e poi, per i cognomi uguali, in modo crescente in base ai nomi.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ciarpame.com/2008/10/24/ordinare-un-array-multidimensionale-e-piu-array-in-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ordinare un array monodimensionale in PHP</title>
		<link>http://www.ciarpame.com/2008/10/16/ordinare-un-array-monodimensionale-in-php/</link>
		<comments>http://www.ciarpame.com/2008/10/16/ordinare-un-array-monodimensionale-in-php/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 21:38:02 +0000</pubDate>
		<dc:creator>Mattia Palugan</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.ciarpame.com/?p=219</guid>
		<description><![CDATA[Per ordinare gli array monodimensionali PHP ci viene incontro fornendoci moltissime funzioni. La più basilare è sort che ci permette di ordinare un array dal valore più piccolo a quello più grande riassegnando le chiavi. Questa funzione restituisce TRUE o FALSE in base al successo o meno dell&#8217;ordinamento e accetta due parametri. Il primo parametro [...]]]></description>
			<content:encoded><![CDATA[<p>Per ordinare gli array monodimensionali PHP ci viene incontro fornendoci moltissime funzioni.<br />
La più basilare è <a href="http://it.php.net/manual/it/function.sort.php" target="_blank">sort</a> che ci permette di ordinare un array dal valore più piccolo a quello più grande riassegnando le chiavi. Questa funzione restituisce TRUE o FALSE in base al successo o meno dell&#8217;ordinamento e accetta due parametri. Il primo parametro è l&#8217;array che vogliamo ordinare e il secondo, facoltativo, è il metodo di ordinamento che può avere tre valori: SORT_REGULAR per comparare gli elementi in modo normale, SORT_NUMERIC per compararli in modo numerico e SORT_STRING per compararli come stringhe.</p>
<p><span id="more-219"></span><br />
Ecco un esempio:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$arr</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'pippo'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'pluto'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'paperino'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">sort</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$arr</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Dopo l&#8217;utilizzo di questa funzione potrebbe essere necessario azzerare il contatore utilizzando la funzione <a href="http://it.php.net/manual/it/function.reset.php" target="_blank">reset</a>.<br />
Le seguenti funzioni si utilizzano alla stesso modo di sort ma servono per ordinare gli array in modo diverso:</p>
<ul>
<li><a href="http://it.php.net/manual/it/function.rsort.php" target="_blank">rsort</a> ordina un array in ordine decrescente;</li>
<li><a href="http://it.php.net/manual/it/function.asort.php" target="_blank">asort</a> ordina un array in ordine crescente ma mantiene le chiavi;</li>
<li><a href="http://it.php.net/manual/it/function.arsort.php" target="_blank">arsort</a> ordina un array in ordine decrescente ma mantiene le chiavi;</li>
<li><a href="http://it.php.net/manual/it/function.ksort.php" target="_blank">ksort</a> ordina un array in base alle chiavi e non ai valori;</li>
<li><a href="http://it.php.net/manual/it/function.krsort.php" target="_blank">krsort</a> ordina un array in base alle chiavi in ordine decrescente.</li>
</ul>
<p>Per ordinare un array in modo naturale si possono usare le funzioni <a href="http://it.php.net/manual/it/function.natsort.php" target="_blank">natsort</a> e <a href="http://it.php.net/manual/it/function.natcasesort.php" target="_blank">natcasesort</a>. Entrambe ordinano in ordine crescente e mantengono le chiavi con l&#8217;unica differenza che natcasesort non fa differenza tra lettere maiuscole e minuscole. Queste funzioni non restituiscono nulla e hanno solo un parametro, l&#8217;array che si vuole ordinare.<br />
Ecco un esempio:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$arr</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'pippo12.php'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'pippo2.php'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'pippo1.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$arr2</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$arr</span><span style="color: #339933;">;</span>
<span style="color: #990000;">sort</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$arr</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">natsort</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$arr2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Il risultato di sort sarà un array con gli elementi in questo ordine: “pippo1.php”, “pippo12.php” e “pippo2.php”; invece il risultato di natsort sarà questo: “pippo1.php”, “pippo2.php” e “pippo12.php”.</p>
<p>È possibile poi ordinare un array in base a una funzione definita dal programmatore. Per far ciò si può utilizzare la funzione <a href="http://it.php.net/manual/it/function.usort.php" target="_blank">usort</a> che restituisce TRUE o FALSE in base al successo o meno dell&#8217;ordinamento e accetta due parametri. Il primo parametro è l&#8217;array da ordinare e il secondo è il nome della funzione definita dal programmatore.<br />
La funzione definita dal programmatore deve accettare due parametri che saranno i due valori da confrontare e deve restituire un numero intero minore di zero se il primo parametro è minore del secondo, zero se i due parametri sono uguale e un numero intero maggiore di zero se il secondo parametro è maggiore del secondo.<br />
Ecco un esempio che simula la funzione sort:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> sortAccordingMe<span style="color: #009900;">&#40;</span><span style="color: #000088;">$a</span><span style="color: #339933;">,</span><span style="color: #000088;">$b</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$a</span><span style="color: #339933;">==</span><span style="color: #000088;">$b</span><span style="color: #009900;">&#41;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$a</span><span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span><span style="color: #000088;">$b</span><span style="color: #009900;">&#41;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">else</span>
		<span style="color: #b1b100;">return</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000088;">$arr</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'pippo'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'pluto'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'paperino'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">usort</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$arr</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'sortAccordingMe'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Altre due funzioni simili nel funzionamento a usort sono <a href="http://it.php.net/manual/it/function.uasort.php" target="_blank">uasort</a> che mantiene le chiavi e <a href="http://it.php.net/manual/it/function.uksort.php" target="_blank">uksort</a> che ordina in base alle chiavi e non ai valori.</p>
<p>La prossima volta spiegherò come ordinare un array multidimensionale e più array contemporaneamente.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ciarpame.com/2008/10/16/ordinare-un-array-monodimensionale-in-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

