Newsgroup: it.comp.www.php
Titolo: Problema con array

Ho la necessità di convertire un array sequenziale a coppie di valori,
in un array bidimensionale. Cerco di spiegarmi meglio:
$arrays = 3,34,  2,58,  4,21,  7,91 etc etc
               ( 1  )   ( 2  )   ( 3  )   ( 4  )
             coppia coppia coppia coppia
vorrei che diventasse:
$array[0]['livello'] = 3
$array[0]['punti] = 34
$array[1]['livello'] = 2
$array[1]['punti] = 58
$array[2]['livello'] = 3
$array[2]['punti] = 34
$array[3]['livello'] = 7
$array[3]['punti] = 91
etc etc
Ho provato con la funzione while (list($key, $val) = each($arrays]))
ma mi estrae un solo valore mentre io vorrei estrarli a coppie.
Come posso fare ? Sono bloccato e senza via d'uscita :(
Grazie in anticipo
Excalibur
-- 
Remove NOSPAM to reply
Togli NOSPAM per rispondere
Admin di LotGD su 
www.ogsi.it/logd

 $arrays = 3,34,  2,58,  4,21,  7,91 etc etc
<?php 
$return = array ();
$arrays = "3,34,  2,58,  4,21,  7,91";
$tokens = explode (",  ", $arrays);
foreach ($tokens as $token) {
	$subtokens = explode (",", $token);
	if (isset ($subtokens[0]) && isset ($subtokens[1])) {
		$return[] = array ("livello" => $subtokens[0], "punti" =>
$subtokens[1]);
	}
}
print ("<pre>");
print_r ($return);
print ("</pre>");
?>
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
L'uomo, conscio di sbagliare, persevera.

 <?php
[CUT]
Sei stato gentilissimo oltre che veloce :)
Funziona perfettamente ma ... c'è un ma, e non posso fare
altro che mea culpa mea culpa. L'array in ingresso non è del tipo
che ho descritto nel primo msg, ma di altro tipo. Sono riuscito a
risolvere da solo il problema (anche se la soluzione mi pare decisa-
mente macchinosa, ma d'altronde le mie limitate conoscenze non
mi permettono altro :) ) e adesso ti sottopongo la mia soluzione
e che tipo di array arriva in ingresso.
Con degli array_push scrivo delle coppie di valori nella variabile $array.
Prima di chiudere il db eseguo il comando $array = serialize($array)
Quando lo riapro eseguo $array = unserialize($array).
A questo punto il comando print_r($array) riporta questo output:
Array ( [0] => 26 [1] => quattordici [2] => 30 [3] => quindici )
Ed ecco la mia macchinosissima soluzione al problema:
$array = unserialize($array)
$convers = array();
  while (list($key, $val) = each($array)){
   if ( ($key/2) == intval($key/2)){
    $convers[($key/2)]['punteggio']=$val;
   }else {
    $convers[(($key-1)/2)]['livello']=$val;
   }
  }
  reset($convers);
  foreach ($convers as $key => $row){
   if ($convers[$key]['livello'] == $livello[$HTTP_GET_VARS[op1]]) {
// $HTTP_GET_VARS[op1] serve a scegliere il livello di cui si vuole visualizzare
il punteggio
    $arr[$k]['punteggio'] = $convers[$key]['punteggio'];
    $arr[$k]['nome'] = $nome;  // $nome è una variabile estratta dal DB
    $k++;
   }
  }
Questo lo eseguo tante volte quanti sono gli account presenti nella tabella.
Al termine di questo processo ho ottenuto un array a 2 dimensioni in cui
sono presenti il nome ed il punteggio di ciascun giocatore per un determinato
livello di un torneo.
Grazie ancora per disponibilità, e se vuoi darmi qulche "dritta" per ottimizzare
il codice, beh io sono qua ;)
Ciao Excal

 ti sottopongo la mia soluzione
Questa e' la mia.
<?php 
$array = array (0 => 26, 1 => "quattordici", 2 => 30, 3 => "quindici");
$return = array();
for ($i = 0; $i < count ($array); $i += 2) {
	if (isset ($array[$i]) && isset ($array[$i + 1])) {
		$return[$array[$i]] = $array[$i + 1];
	}
}
print ("<pre>"); print_r ($return); print ("</pre>");
?>
-- 
I am what I am, I do what I can


 print ("<pre>"); print_r ($return); print ("</pre>");
Purtroppo non funziona :(
Ho adattato comunque la tua proposta (decisamente più lineare
della mia) in questo modo:
$array = array (0 => 26, 1 => "quattordici", 2 => 30, 3 =>"quindici");
<?php
$return = array();
for ($i = 0; $i < count ($array); $i += 2) {
if (isset ($array[$i]) && isset ($array[$i + 1])) {
$return[($i/2)]['punteggio'] = $array[$i];
$return[($i/2)]['livello'] = $array[$i + 1];
}
}
reset($return);
print ("<pre>"); print_r ($return); print ("</pre>");
?>
[0] => Array ( [punteggio] => 26 [livello] => quattordici )
[1] => Array ( [punteggio] => 30 [livello] => quindici ) )
Grazie ancora per la disponibilità e per la dritta dell'incremento
a modulo 2 ($i += 2), non ci avevo proprio pensato :)

 Purtroppo non funziona :(
<?php 
$array = array (0 => 26, 1 => "quattordici", 2 => 30, 3 => "quindici");
$return = array();
for ($i = 0; $i < count ($array); $i += 2) {
	if (isset ($array[$i]) && isset ($array[$i + 1])) {
		$return[] = array ("livello" => $array[$i], 
			   		 "punti" => $array[$i + 1]);
	}
}
print ("<pre>"); print_r ($return); print ("</pre>");
?>
-- 


 print ("<pre>"); print_r ($return); print ("</pre>");
Perfetto :)
Grazie Excal