PHP/Programmazione/Array: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Riga 107:
$stringa = implode(":", $arr); //restituisce a:b:c
</source>
 
 
 
=== foreach ===
Questa non è proprio una funzione, ma una struttura di controllo.
Line 154 ⟶ 157:
Array ( [0] => a [1] => mario [2] => c )
</code>
 
 
 
=== unset() ===
Unset distrugge la variabile ma non libera immediatamente la memoria!! La memoria verrà liberata quando ci sarà qualche ciclo di cpu non utilizzato oppure quando il programma finirà la memoria.<br>
Nel caso degli array, unset($mioarray); distruggerà l'array, con foreach invece distruggeremo i valori all'interno dell'array ma non l'array stesso. Infatti se:
<source lang="php">
<?php
$arr=array('mario','ciccio','fuffi');
print_r($arr);
unset($arr);
echo "<br /> unset array arr, arr e' ancora un array?<br />";
echo is_array($arr) ? "si arr e' un array" : "no arr non e' un array";
 
echo "<br><br>";
$mioarr=array('ena','dva','tri');
foreach($mioarr as $i => $value)
unset($mioarr[$i]);
echo "cancellati i valori dell'array mioarr con foreach, e' ancora un array? <br />";
echo is_array($mioarr) ? "si mioarr e' un array" : "no mioarr non e' un array array";
?>
</source>
l'output sarà:<br>
<code>
Array ( [0] => mario [1] => ciccio [2] => fuffi ) <br>
unset array arr, arr e' ancora un array?<br>
no arr non e' un array<br>
 
 
cancellati i valori dell'array mioarr con foreach, e' ancora un array? <br>
si mioarr e' un array<br>
</code>
<b>Attenzione!</b><br>
Se utilizziamo foreach per cancellare gli elementi dell'array, non reindicizzeremo l'array, quindi:
<source lang="php">
$mioarr=array('uno','due','tre');
print_r($mioarr);
 
foreach($mioarr as $i => $value)
unset($mioarray[$i];
 
print_r($mioarr);
 
mioarr[]='ciccio';
print_r($mioarr);
</source>
restituirà:<br>
<code>
Array ( [0]=>uno [1]=>due [2]=>tre )<br />
Array()<br />
Array ( [3]=>ciccio )<br /></code>
l'array non viene reindicizzato come quando usiamo
unset($mioarray);
la stessa cosa se cancelliamo solo un elemento:
<source lang="php">unset($mioarr[1]);</source>
ecco che l'array sarà adesso:
<source lang="php">print_r($mioarr);</source>
<code>Array ( [0]=>uno [2]=>tre )</code><br />
per reindicizzarlo dovremo usare:
<source lang="php">$mioarr=array_values($mioarr);</source>
<b>array_values</b> restituisce tutti i valori contenuti nell'array e indicizza numericamente l'array destinatario.<br />
L'array ora conterrà:<br />
<code>
Array ( [0]=>uno [1]=>tre )
</code>
 
 
=== Altre funzioni ===