Articoli con Tag ‘Array’


Ordinare un array di array in PHP

La funzione PHP usort() vista in WordPress: ordinare una serie di post per un campo qualsiasi può essere utilizzata facilmente anche per ordinare array di array. Ad esempio se abbiamo:

1
2
3
4
5
6
7
8
9
$args = array(
  array( 'nome' => 'mike', 'anno' => 2001 ),
  array( 'nome' => 'frank', 'anno' => 2010),
  ...
);

usort($args, function($a, $b) {
  return ($a['anno'] > $b['anno']);
});

Continua...

Objective-C: come utilizzare al meglio i file property list

Uno dei vantaggi dei file Property list, che altro non sono che file testuali che seguono lo standard XML, è quello di poter essere trasformati istantaneamente in oggetti (come array o dictionary) Objective-C. Quando si crea un file Property list:

Property List

Continua...

Very short snippet: memorizzare una serie di immagini in NSUserDefaults

Per memorizzare un’immagine nelle NSUserDefaults è sufficiente riuscire ad ottenere un puntatore NSData ai dati dell’immagine. In questo modo potremmo ricostruire la nostra immagine in qualsiasi momento successivo.

Nell’esempio mostrato qui sotto viene sfruttato un array che contiene al massimo 4 immagini. Ogni immagine nuova viene messa in testa e quella in eccesso eliminata.

Continua...

Come sviluppare in PHP con Xcode e Objective-C

Come molti programmatori usano fare, anch’io mi costruisco le mie librerie di funzioni pronte per essere riutilizzate in più progetti e in più contesti. Lasciatemi passare il titolo di questo post, forse un po’ azzardato ma, tuttavia, come vedremo, non lontano dalla realtà.

In Objective-C è possibile scrivere e chiamare codice C/C++, compreso l’assembly se è per questo. Questa sua caratteristica lo rende un linguaggio davvero versatile e, per certi aspetti, fenomenale. Da un lato, infatti, è possibile utilizzare e apprezzare la sintassi prettamente Objective-C, dall’altro è possibile eseguire velocemente porting di codice scritto in ANSI C (magari per Digital Unix o Sun) e utilizzarlo comodamente nelle nostre applicazioni iPhone o iPad; per non parlare di tutto il Kernel BSD già disponibile su Mac OS X!

Continua...

WordPress MU: aggregare le singole tag cloud dei blog

Potrebbe non capitarvi mai di dover aggregare le singole tag cloud in WordPress MU. Inoltre, in determinati contesti, potrebbe non aver senso mostrare una “nuvola” con le tag di blog eterogenei. Tuttavia, nel caso remoto che a qualcuno servisse, ecco un modo semplice di mostrare una tag cloud aggregata.

Continua...

Very short snippet: estendere un array Actionscript con il metodo shuffle()

Avevo parlato già di come realizzare il metodo shuffle() in Javascript e Actionscript. Mi sono accorto, tuttaavia, di non aver sottolineato che anche Actionscript è in grado di estendere, nel medesimo modo di Javascript, il proprio oggetto Array:

Continua...

Very short snippet: shuffle() in Javascript e Actionscript

In PHP esiste una comoda funzione chiamata shuffle() che permette di mescolare un array (vedi Very short trick: prendere elementi casuali da un array in PHP). Un’ottima versione per Javascript l’ho trovata qui. Qui sotto il codice leggermente rivisto:

Continua...

Very short trick: prendere elementi casuali da un array in PHP

La funzione shuffle() di PHP “mescola” letteralmente gli elementi di un array:

1
2
3
4
$a = array( "ele1","ele2","ele3","ele4" );
print_r( $a );
shuffle( $a );
print_r( $a );

Continua...

WordPress: wp_parse_args()

La funzione wp_parse_args() (come molte altre non documentata) elabora una stringa nel formato:

1
var1=value1&var2=value2...varn=valuen

Continua...

Varietà di coding e di coding

Qualcuno sostiene che la programmazione è un arte e, in ultima analisi, non posso che essere d’accordo soprattutto quando si scovano soluzioni estremamente diverse per un medesimo problema. Per capire quanto sia vero questo, ecco come un’identica necessità nel medisimo linguaggio (Javascript) può essere risolta con approcci assolutamente diversi ed originali.

Left Pad zero

Un numero, ma il discorso è valido anche per una qualsiasi stringa, come 123 può essere riempito a sinistra – per pareggiarlo – con un certo numero di zeri, ad esempio: 00123. Questa necessità si presenta in varie occasioni e risulta utile per incolonnare – o comunque mostrare – un numero in maniera pulita, indicandone implicitamente il suo valore massimo. Nei videogame, ad esempio, il classico punteggio (lo score) viene spesso indicato con 001234, indicando che al massimo si arriverà a 999999. Ecco come lo stesso problema è stato risolto da vari sviluppatori:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
 * Left Pad String
 *
 * @from          http://snipplr.com/view/8423/left-pad-string/
 * @author-web    http://www.mechanicmatt.com/
 *
 * @param         num         - Striga da riempire
 * @param         totalChars  - Numero totale di caratteri, comprensivo degli "zeri"
 * @param         padWidth    - Carattere usato per riempire, default "0"
 */

function leadingZeros(num, totalChars, padWith) {
    num = num + "";
    padWith = (padWith) ? padWith : "0";
    if (num.length < totalChars) {
        while (num.length < totalChars) {
            num = padWith + num;
        }
    } else {}

    if (num.length > totalChars) { //if padWith was a multiple character string and num was overpadded
        num = num.substring((num.length - totalChars), totalChars);
    } else {}

    return num;
}
alert(leadingZeros("asdf", 10, "0"));

Questa soluzione è estremamente articolata, tuttavia permette di aggiungere un numero indefinito di 0 al numero num scegliendo anche il tipo di carattere da usare tramite padWidth, invece del default 0.
Decisamente originale, invece, questa soluzione:

1
2
3
4
5
6
7
8
9
10
11
12
13
/**
 * string_pad
 *
 * @from        http://snipplr.com/view/700/stringpad/
 * @author      http://d.hatena.ne.jp/brazil/20060721/1153489937
 *
 * @param         str         - Striga da riempire
 * @param         len         - Numero totale di caratteri, comprensivo degli "zeri"
 * @param         ch          - Carattere usato per riempire
 */

function pad(str, len, ch){return new Array(len-(''+str).length+1).join(ch) + str}

alert(pad(56, 4, '0')); // 0056

Stesso risultato, con un approccio completamente diverso. Anche in questo caso abbiamo la possibilità di decidere il numero di caratteri padding tramite il parametro len e il tipo di carattere da usare tramite ch. Manca però l’uso del default previsto nella precedente funzione.
Quella che uso io, invece…:

1
2
3
4
5
6
7
8
9
10
11
12
/**
 * string_pad
 *
 * @author      Giovambattista Fazioli
 * @web         http://www.undolog.com
 *
 * @param         s           - Striga da riempire
 * @param         l           - Stringa che indica sia il carattere che la lunghezza
 *                              ad esempio "0000" = carattere "0" lunghezza 4
 */

function padding(s,l) { return( l.substr(0, (l.length-s.length) )+s ); }
alert( padding('123','0000') );

Se avete altre soluzioni interessanti non esitate a commentare :D

Continua...



Stop SOPA