Sono un po 'arrugginito con php come capita che a volte lo uso da settimane e a volte capita che non lo usi da mesi. Ad ogni modo sto cercando di passare i valori di un altro array sono "array", su un altro array in modo ordinato ... Quello che voglio fare è essenzialmente creare una chiave che mi permetta di organizzare i valori incrementali per linea, in particolare;Come usare array_push con array associativo e chiave indice?
contenuto matrice
Array
(
[key] => value
[2] => 1
[3] => Inter
[4] => 4
[5] => 4
[6] => 0
[7] => 0
[8] => 5
[9] => 1
[10] => +4
[11] => 12
[12] => Chievo Verona - Inter 0 - 1
[13] => Inter - Milan 1 - 0
[14] => Carpi - Inter 1 - 2
[15] => Inter - Atalanta 1 - 0
[16] => ;
[17] => 2
[18] => Torino
[19] => 4
[20] => 3
[21] => 1
[22] => 0
[23] => 9
[24] => 4
[25] => +5
[26] => 10
[27] => Torino - Sampdoria 2 - 0
[28] => Hellas Verona - Torino 2 - 2
[29] => Torino - Fiorentina 3 - 1
[30] => Frosinone - Torino 1 - 2
[31] => ;
[32] => 3
[33] => Fiorentina
[34] => 4
[35] => 3
[36] => 0
[37] => 1
[38] => 5
[39] => 3
[40] => +2
[41] => 9
[42] => Carpi - Fiorentina 0 - 1
[43] => Fiorentina - Genoa 1 - 0
[44] => Torino - Fiorentina 3 - 1
[45] => Fiorentina - Milan 2 - 0
[46] => ;
[47] => 4
[48] => Roma
[49] => 4
[50] => 2
il ";" Dovrà essere in grado di riconoscere dove si interrompe la linea, non ricordo se esiste un metodo che mi permetta di accedere alla prossima chiave.
Attualmente il mio codice è:
$classifica = array("key" => "value");
function buildArrayClassifica()
{
global $array;
global $classifica;
$i = 0;
foreach(array_slice($array,1) as $key => $value)
{
if($value != ";")
{
array_push($classifica[$i], $value); //there is a problem
echo $value . " ";
}
else if($value == "value ")
{
continue;
}
else
{
$i++;
echo "<br/>";
}
}
}
Il codice Tornerò questo errore:
Warning: array_push() Expects parameter 1 to be array, null given in...
in particolare sulla array_push, sembra non accettare le chiavi incrementali o forse lo sto facendo la strada sbagliata. Qualcuno può dirmi come risolvere?
AGGIORNAMENTO
Come avete visto il problema non è semplice ed è abbastanza difficile da spiegare il problema, ma cercherò di essere ancora più chiaro di incontrare. Come puoi vedere sopra, sei la struttura dell'array "array", ma è una struttura disordinata che deve essere ordinata in un array addizionale. Per ricapitolare la struttura dell'array "array" è:
1 , Inter , 4 , 4 , 0 , 0 , 5 , 1 , +4 , 12 , Chievo Verona - Inter 0 - 1 , Inter - Milan 1 - 0 , Carpi - Inter 1 - 2 , Inter - Atalanta 1 - 0 , ;
";" significa che la linea è finita. Quindi il prossimo valore vicino al ";" significa che verrà una nuova linea. Ho bisogno di spostare tutto il valore di "array"
in ordine classifica
, ma voglio organizzarle per:
ROW1 => 1 , Inter , 4 , 4 , 0 , 0 , 5 , 1 , +4 , 12 , Chievo Verona - Inter 0 - 1 , Inter - Milan 1 - 0 , Carpi - Inter 1 - 2 , Inter - Atalanta 1 - 0
ROW2 => Other values...
Così il ROW1, 2 .. rapresents la chiave dell'array classifica
. Sto cercando di spingere il valore all'interno di una riga e dopo di esso incrementare $ i index
ma il codice non aggiunge il valore perché l'indice sostituire in loop la chiave attuale, ad esempio:
actual foreach content:
$i = 0
value = "Inter"
content of array=> [0] => Inter
now the $i is ever 0 because the row isn't finished yet, the ";"
it has not yet been reached, so the next content of foreach is:
"1" but replace the "Inter" value, so this is a problem.
Se si utilizza un array associativo si aggiunge semplicemente la coppia chiave => valore all'array ex: $ myArray [$ myKey] = $ myValue; Il push su un array indicizzato è inutile poiché è già indicizzato dal tasto –
Forse ho capito male, ma array_push mostra lo stesso errore: array_push ($ classifica [$ i] = $ valore); // Attenzione: array_push() si aspetta almeno 2 parametri – Bender
Bender, sbarazzarsi di array_push, il codice dovrebbe essere solo $ classifica [$ i] = $ valore; –