Newsgroup: it.comp.www.php
Titolo: safe cursor

è possibile salvare la posizione di un cursore interno di un array e poi
ripristinarlo ?
sto cercando fra le funzioni degli array ma non trovo niente...

 sto cercando fra le funzioni degli array ma non trovo niente...
Quale e' la tua reale necessita'?
-- 
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
Do. Or do not. There is not try.


ho un array con n-elementi e su questo array ho necessità di fare ricerche
per estrapolare sotto insiemi
dei dati.
senza perdere la posizione originale del cursore...

 dei dati.
http://www.php.net/array_filter



Ero già arrivato a questa funzione il problema e che non posso passare dei
parametri (o forse io non ho capito)
alla funzione callback
array array_filter ( array input [, callback callback])

 alla funzione callback
<?php 
function mod ($var, $mydiv) { 
   return ($var % $mydiv == 0); 
} 
$array1 = array(6, 7, 8, 9, 10, 11, 12); 
$myval = 3; // variabile passata
print_r (array_filter ($array1, create_function ('$a','global $myval;
return mod ($a, $myval);')));
?>



Pefetto grazie mille non avevo pensato di usare create_function...


Mmm c'è un problemino la mia var non è globale ma è il parametro formale di
una funzione
   function confronta_id($val,$id) {
    echo $id;
 die("stop");
     if ($val['id'] == $id)
  return true;
  else
  return false;
   }
   function isParent_array($id,$curid,$arr){
    echo $curid;
 $result = array_filter ($arr, create_function ('$a','global $curid;return
confronta_id ($curid, $curid);'));
 print_r($result);
 /*
....

 formale di una funzione
Per favore ricontrolla il codice che hai postato, non si capisce bene
quello che vuoi fare. Ad esempio richiami "confronta_id ($curid,
$curid);" e non usi da nessuna parte $a, inoltre posta anche un esempio
di chiamata di isParent_array con relativi valori di input ed il
risultato che desideri.



   function confronta_id($val,$id) {
    echo $id;
 die("stop");
     if ($val['id'] == $id)
  return true;
  else
  return false;
   }
   function isParent_array($id,$curid,$arr){
 $result = array_filter ($arr, create_function ('$a','$curid;return
confronta_id ($a, $curid);'));
 print_r($result);
}
isParent_array(1,25,$recordset); //recordset è un array

 isParent_array(1,25,$recordset); //recordset h un array
[mi quoto]
inoltre posta anche un esempio di chiamata di isParent_array con
relativi valori di input ed il risultato che desideri.
[/mi quoto]



Cosa manca ?
il risultato che desidero: un array con tutte le righe che soddisfano il
confronto.

 il confronto.
$recordset = array (...);



Mica ti ho capito :? mi ha chiesto cosa volevo e cosa facevo per ottenerlo
l'ho scritto ed ho postato.
Poi ti sei quantato , ho pensato manca qualcosa allora ho aggiunto cosa
volevo
Poi mi rispondi cosě  :| non capisco....

 cosa volevo
Posta il contenuto della variabile $recordset.



$sql = "
  SELECT COUNT(P2.id) AS 'level', P1.nome,P1.id,P1.sx,P1.dx
  FROM personale AS P1, personale AS P2
  WHERE P1.sx BETWEEN P2.sx AND P2.dx GROUP BY P1.nome ORDER BY P1.sx
 ";
 $recordset = array();
 $res = mysql_query($sql);
 while ($line = mysql_fetch_assoc($res)) {
  $recordset[] = $line;
 }

  }
[mi quoto]
Posta il contenuto della variabile $recordset.
[/mi quoto]
var_export ($recordset);
Senza conoscere la struttura del tuo DB ne i valori contenuti, come
credi possa essere in grado di testare una eventuale soluzione.



Sono tanti dati
array ( 0 => array ( 'level' => '1', 'nome' => 'Massimiliano', 'id' => '1',
'sx' => '1', 'dx' => '34', ), 1 => array ( 'level' => '2', 'nome' =>
'Prodotti', 'id' => '10', 'sx' => '2', 'dx' => '19', ), 2 => array ( 'level'
=> '3', 'nome' => 'carcioffi', 'id' => '15', 'sx' => '5', 'dx' => '6', ), 3
=> array ( 'level' => '3', 'nome' => 'melanzane', 'id' => '16', 'sx' => '7',
'dx' => '8', ), 4 => array ( 'level' => '3', 'nome' => 'pepperoni', 'id' =>
'17', 'sx' => '9', 'dx' => '10', ), 5 => array ( 'level' => '3', 'nome' =>
'pomodori', 'id' => '18', 'sx' => '11', 'dx' => '18', ), 6 => array (
'level' => '4', 'nome' => 'Verdi', 'id' => '26', 'sx' => '12', 'dx' =>
'13', ), 7 => array ( 'level' => '4', 'nome' => 'Gialli', 'id' => '27', 'sx'
=> '14', 'dx' => '15', ), 8 => array ( 'level' => '4', 'nome' =>
'Arancioni', 'id' => '28', 'sx' => '16', 'dx' => '17', ), 9 => array (
'level' => '2', 'nome' => 'Viallaggio', 'id' => '19', 'sx' => '20', 'dx' =>
'33', ), 10 => array ( 'level' => '3', 'nome' => 'castedd', 'id' => '20',
'sx' => '21', 'dx' => '22', ), 11 => array ( 'level' => '3', 'nome' =>
'Merau', 'id' => '21', 'sx' => '23', 'dx' => '24', ), 12 => array ( 'level'
=> '3', 'nome' => 'Serba', 'id' => '22', 'sx' => '25', 'dx' => '32', ), 13
=> array ( 'level' => '4', 'nome' => 'Casa Mia', 'id' => '23', 'sx' => '26',
'dx' => '27', ), 14 => array ( 'level' => '4', 'nome' => 'Casa di Raffaele',
'id' => '24', 'sx' => '28', 'dx' => '29', ), 15 => array ( 'level' => '4',
'nome' => 'Chiesa', 'id' => '25', 'sx' => '30', 'dx' => '31', ), )stop
cmq non credo che questo aiuti la struttura si evince dalla query (sto
scrivendo del codice per l'algoritmo nestedset)
ma poi oltre a questo, era un meccanismo che mi interessava anche senza
query ma con un array normale con degli
elementi...
Cmq è tutto qua sopra :-)

 cmq non credo che questo aiuti la struttura si evince dalla query 
Si, si evince dalla query, ma se vuoi che qualcuno ti aiuti, obbligarlo
a fare il reverse engineering del tuo codice PHP ed SQL non e' la
strada giusta.
function confronta_id ($val, $id) {
	return $val['id'] == $id;
}
function isParent_array ($id, $curid, $arr) {
	return array_filter ($arr, create_function ('$a','global $curid;
return confronta_id ($a, ' . $curid . ');'));
}
print_r (isParent_array (1, 25, $recordset));



si ok ma bo mi sembrava banale... cmq cosě ho provato pure io :) riprovo
magari č sfuggito qualcosa...
tnks...