Question

J'utilise une classe qui me renvoie la valeur d'une ligne particulière et de la cellule d'une feuille de calcul Excel. Pour mettre en place un réseau d'une colonne Je compte les lignes, puis une boucle à travers ce nombre avec une boucle de for() puis en utilisant la $array[] = $value pour définir la valeur de l'objet de réseau incrémenter.

Cela fonctionne très bien si aucune des valeurs dans une cellule sont 0. Les rendements de la classe moi un numéro 0 donc rien de à faire avec la classe, je pense que c'est la façon dont je suis une boucle à travers les lignes, puis de les affecter au tableau ... Je veux mener à bien la valeur 0 parce que je suis graphiques créant avec les données après, voici le code que j'ai.

// Get Rainfall
$rainfall = array();
for($i=1;$i<=$count;$i++)
{
    if($data->val($i,2) != 'Rainfall') // Check if not the column title
    {
        $rainfall[] = $data->val($i,2);
    }
}

Pour votre information $data est l'objet feuille de calcul Excel et la méthode $data->val(row,col) est ce qui me renvoie la valeur. Dans ce cas, je reçois des données de la colonne 2.

Capture d'écran de tableur

Était-ce utile?

La solution

Avez-vous essayé un array_push ()?

array_push($rainfall, $data->val($i,2));

Autres conseils

J'utiliser une comparaison stricte avec le pas identique opérateur ici au lieu d'utiliser l'opérateur égal à ne pas:

if($data->val($i,2) !== 'Rainfall')

Si $data->val($i,2) est un entier et que vous utilisez == les deux côtés seront jetés aux entiers qui vous donnera le résultat que tous les entiers travailleraient comme prévu, sauf pour le zéro. Voici un résumé de la différence entre == et === lorsque l'on compare la chaîne « RainFall » avec zéro:

0 == "RainFall" : true
0 != "RainFall" : false
0 === "RainFall" : false
0 !== "RainFall" : true

Je pense que le tableau traite le 0 comme faux, ce qui pourrait l'expliquer ne va pas dans le tableau. Would quelque chose comme ce travail (si vous utilisez des entiers)?

(int)($data->val($i,2));

ou

(float)($data->val($i,2);)

Les mensonges de problème dans l'instruction if. Vous essayez de comparer une chaîne avec un nombre entier, qui, selon la documentation de PHP typer les deux nombres entiers.

  

Si vous comparez un numéro avec une chaîne ou la comparaison porte sur chaînes numériques, chaque chaîne est convertie en un nombre et la comparaison effectuée numériquement. Ces règles sont également applicables à l'instruction switch. La conversion de type ne se produit pas lorsque la comparaison est === ou! == car cela implique de comparer le type ainsi que la valeur.

Vous pouvez en lire plus ici http://php.net/manual/ fr / language.operators.comparison.php .

Mise à jour:. L'instruction if ne fonctionnera pas dans le cas de 0 parce que (int)"Rainfall" sera par typecasted en 0 par PHP faisant la déclaration être if (0 != 0) { ... }

Si $i représente le numéro de ligne, pourquoi ne pas commencer de 2 au lieu de 1?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top