Nelle operazioni quotidiane di PHP, gli array sono la struttura più comune, e ci occupiamo quasi ogni giorno di contenuti relativi agli array. Quindi la domanda è: come si attraversano e si elaborano array in generale?
1、per ogni
È familiare, non è il tuo preferito?
$arr = ['a', 'b', 'c'];
foreach ($arr come $key => $value) {
$arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
2、array_map
Usa funzioni anonime per gestire ogni elemento dell'array. Un nuovo array viene restituito quando il percorso è completato
$arr = ['a', 'b', 'c'];
$arr = array_map(funzione ($item) {
torna $item. '_i';
}, $arr);
print_r($arr); ['a_i', 'b_i', 'c_i'];
Puoi lavorare con più array contemporaneamente
$arr_1 = ['a', 'b', 'c'];
$arr_2 = ['tu', 'buono', 'è', 'originale', 'peccato'];
$arr_n = [...];
$arr = array_map(funzione ($item_1, $item_2) {
ritorna $item_1. '_' . $item_2. '_i';
}, $arr_1, $arr_2);
print_r($arr); ['a_ tu _i', 'b_ è good_i', 'Sei c__i', '_original _i', '_sin_i']
Sì, il numero di attraversamenti si basa sull'array più lungo.
Dopo aver attraversato 3 volte, $arr_1 è effettivamente completato, quindi i valori di $item_1 sono nulli dopo di ciò
3、array_walk
Attraversare il tuo array come reference pass non ha valore di ritorno e può elaborare solo un array.
$arr = ['a', 'b', 'c'];
array_walk($arr, funzione ($item) {
$item = $item . '_i';
});
print_r($arr); ['a_i', 'b_i', 'c_i'];
Nota $item, sì, c'è un extra &, il che significa che il tuo parametro riceve dati per riferimento. Tutto quello che devi fare è trovare un modo per cambiare questo parametro.
Se si tratta di array bidimensionali, anche il metodo di elaborazione è inseparabile.
$arr = [
['nome' => 'a'],
['name' => 'b'],
['nome' => 'c']
];
array_walk($arr, funzione ($item) {
$item['nome'] = $item['nome'] . '_i';
});
print_r($arr); [['name' => 'a_i'], ['name' => 'b_i'], ['name' => 'c_i']];
4、per
Questa dovrebbe essere una sintassi molto generica
$arr = ['a', 'b', 'c'];
per ($i = 0; $i < conte ($arr); ++$i) {
$arr[$i] = $arr[$i] . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
Non consigliato. Non è efficiente come foreach. E il metodo di scrittura è leggermente più macchinoso rispetto a Forreach.
5、ciascuno
Ahah, questa funzione è stata abbandonata in PHP7.2 @deprecated e sembra particolarmente all'antica. Anche l'efficienza di questo metodo di scrittura non è buona, e i principianti dovrebbero rinunciare subito.
$arr = ['a', 'b', 'c'];
while (list($key, $value) = each($arr)) {
$arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
6、reset
Per essere precisi, non è solo una funzione da reset, ma anche una combinazione di più funzioni integrate, che fondamentalmente non viene usata per scrivere codice
$arr = ['a', 'b', 'c'];
reset() puntatore alla testa, infatti, il punto predefinito è puntare all'inizio, puoi ignorare questa frase
reset($arr);
current() per ottenere il valore dell'elemento del puntatore corrente
mentre ($value = corrente($arr)) {
key() per ottenere l'elemento sottoscript del puntatore corrente
$arr[chiave($arr)] = $value . '_i';
Next() puntatore al prossimo
prossimo ($arr);
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
|