Diciamo che ho questo array:PHP aggiungere un elemento da un array
$array = (1,2,4,5);
Ora Come faccio ad aggiungere mancante 3 in ordine di sopra nella corretta posizione dell'indice /chiave -wise?
Diciamo che ho questo array:PHP aggiungere un elemento da un array
$array = (1,2,4,5);
Ora Come faccio ad aggiungere mancante 3 in ordine di sopra nella corretta posizione dell'indice /chiave -wise?
Prova:
array_splice($array, 2 /*offset*/, 0 /*length*/, 3 /*value*/);
Nota che questo riordinare le chiavi della matrice di ingresso da 0 a n-1.
(Edit: Il valore di ritorno non è usato in questo caso.)
array_merge(array_slice($array,0,2),array(3),array_slice($array,2))
function array_insert($array,$pos,$val)
{
$array2 = array_splice($array,$pos);
$array[] = $val;
$array = array_merge($array,$array2);
return $array;
}
utilizzo:
array_insert($a,2,3);
In realtà ricostruisci 'array_splice()' – Harmen
Ecco perché ci sono così tante funzioni di array in PHP: scrivere il tuo è normalmente più veloce che leggere le sottigliezze di built-in in quelli nel manuale :) –
wow, impariamo qualcosa di nuovo ogni giorno. grazie per il puntatore @Harmen :) +1 – tpae
Forse mi manca la complessità della tua domanda, ma non ti dà quello che vuoi?
$array[] = 3;
sort($array);
Ultimo ma non meno importante:
function insertMissingIntoArray($values = array(), $valueIncrement = 1) {
$lastValue = 0;
foreach ($values as $key=>$val) {
if ($key != 0) {
if ($val != $lastValue + $valueIncrement) {
array_splice($values, $key, 0, $val);
}
$lastValue = $val;
}
}
return $values;
}
Usato così:
$values = array(1,2,4,5,7,9);
$fixedValues = insertMissingIntoArray($values, 1);
// $fixedValues now is (1,2,3,4,5,6,7,8,9)
Questo restituisce un array vuoto – Harmen
Sì, avevo già corretto la mia risposta. Restituisce gli elementi che sono stati estratti, il che non è nulla in questo caso. Modifica l'array di input originale per riferimento. – Matthew
konforence, -1 diventa +1;) – Harmen