2010-06-26 7 views
3

Je voudrais extraire les groupes de données des tableaux PHP en fonction du "RouterName". Donc, à la fin, je vais avoir 4 Big Arrays (ArrDeviceA, ArrDeviceB, etc.)Extrait de Php Array en utilisant les conditions

Je ne veux pas utiliser foreach et boucle chaque ligne et mettre dans le tableau séparé. De plus, il est possible que certaines grappes contiennent plus de 3 lignes. Le nombre de lignes n'est pas constant.

Y at-il une fonction pour interroger le tableau en PHP?
alt text http://img208.imageshack.us/img208/7616/18077470.jpg

Les données brutes du tableau php sont les suivantes:

Array 
(
    [0] => Array 
     (
      [RouterName] => DeviceA 
      [Reference] => R2a 
      [AverageRSSI] => -36.00 
      [AverageQuality] => 63.00 
      [Date_Time] => 12-June-2010 
     ) 

    [1] => Array 
     (
      [RouterName] => DeviceA 
      [Reference] => R2a 
      [AverageRSSI] => -51.03 
      [AverageQuality] => 47.97 
      [Date_Time] => 11-June-2010 
     ) 

    [2] => Array 
     (
      [RouterName] => DeviceA 
      [Reference] => R2a 
      [AverageRSSI] => -53.63 
      [AverageQuality] => 45.37 
      [Date_Time] => 10-June-2010 
     ) 

    [3] => Array 
     (
      [RouterName] => DeviceB 
      [Reference] => R2 
      [AverageRSSI] => -38.19 
      [AverageQuality] => 60.81 
      [Date_Time] => 12-June-2010 
     ) 

    [4] => Array 
     (
      [RouterName] => DeviceB 
      [Reference] => R2 
      [AverageRSSI] => -38.64 
      [AverageQuality] => 60.36 
      [Date_Time] => 11-June-2010 
     ) 

    [5] => Array 
     (
      [RouterName] => DeviceB 
      [Reference] => R2 
      [AverageRSSI] => -38.67 
      [AverageQuality] => 60.33 
      [Date_Time] => 10-June-2010 
     ) 

    [6] => Array 
     (
      [RouterName] => DeviceC 
      [Reference] => SCN1010 
      [AverageRSSI] => -69.12 
      [AverageQuality] => 29.88 
      [Date_Time] => 12-June-2010 
     ) 

    [7] => Array 
     (
      [RouterName] => DeviceC 
      [Reference] => SCN1010 
      [AverageRSSI] => -70.99 
      [AverageQuality] => 28.01 
      [Date_Time] => 11-June-2010 
     ) 

    [8] => Array 
     (
      [RouterName] => DeviceC 
      [Reference] => SCN1010 
      [AverageRSSI] => -71.52 
      [AverageQuality] => 27.48 
      [Date_Time] => 10-June-2010 
     ) 

    [9] => Array 
     (
      [RouterName] => DeviceD 
      [Reference] => SCN1020 
      [AverageRSSI] => -62.48 
      [AverageQuality] => 36.52 
      [Date_Time] => 12-June-2010 
     ) 

    [10] => Array 
     (
      [RouterName] => DeviceD 
      [Reference] => SCN1020 
      [AverageRSSI] => -34.60 
      [AverageQuality] => 64.40 
      [Date_Time] => 11-June-2010 
     ) 

    [11] => Array 
     (
      [RouterName] => DeviceD 
      [Reference] => SCN1020 
      [AverageRSSI] => 0.00 
      [AverageQuality] => 99.00 
      [Date_Time] => 10-June-2010 
     ) 

) 

Répondre

3

Je ne veux pas utiliser foreach et boucle toutes les lignes et mettre dans le tableau séparé.

Pourquoi? Voilà 4 lignes de code cristallin, et vous pourriez même enregistrer une ligne ... Restez simple. Avoir un nombre inconnu de lignes n'est pas un problème si vous utilisez l'opérateur [].

2

Is there any function to query the array in PHP?

En PHP, vous pouvez utiliser la fonction in_array() (http://www.php.net/manual/en/function.in-array.php) pour vérifier s'il existe une certaine clé, et array_search() (http://www.php.net/manual/en/function.array-search.php) qui fait presque la même chose de in_array() fonction, mais renvoie la valeur d'index du tableau au lieu d'une valeur booléenne.

Ils ne vont pas interroger en fonction mysql_query(), mais vous pouvez faire quelque chose comme ceci:

function array_query($array,$what){ 
    if(in_array($what, $array)){ 
     return $array[array_search($what, $array)]; 
    } 
    return false; 
} 

J'espère que ce travail pour vous

EDIT: Je l'ai trouvé un array_search() comme pour les tableaux multidimensionnels (votre exemple), le code est ci-dessus, il suffit d'échanger sur ma fonction la fonction array_search($what, $array) avec recursiveArraySearch($array,$what) fonction:

function recursiveArraySearch($haystack, $needle, $index = null) 
{ 
    $aIt  = new RecursiveArrayIterator($haystack); 
    $it = new RecursiveIteratorIterator($aIt); 

    while($it->valid()) 
    {  
     if (((isset($index) AND ($it->key() == $index)) OR (!isset($index))) AND ($it->current() == $needle)) { 
      return $aIt->key(); 
     } 

     $it->next(); 
    } 

    return false; 
} 
1

Il y a la bibliothèque SQL4Array d'absynthe qui vous permet d'exécuter des requêtes SQL sur un tableau PHP. Je ne crois pas encore qu'il supporte les clauses GROUP BY, mais il peut fournir une alternative aux autres méthodes de recherche de tableaux