3

Excel スプレッドシートの特定の行とセルの値を返すクラスを使用しています。1 列の配列を構築するために、行をカウントしてから、その数をfor()ループでループし、 を使用し$array[] = $valueてインクリメント配列オブジェクトの値を設定します。

セル内の値が ではない場合、これはうまく機能します0。クラスは私に数値0を返すので、クラスとは何の関係もありません。行をループしてから配列に割り当てる方法だと思います...グラフを作成しているため、0の値を継承したいその後のデータで、ここに私が持っているコードがあります。

// 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);
    }
}

あなたの情報$dataはExcelスプレッドシートオブジェクトであり、メソッド$data->val(row,col)は私に値を返すものです。この場合、 column からデータを取得しています2

スプレッドシートのスクリーンショット

4

4 に答える 4

4

array_push() を試しましたか?

array_push($rainfall, $data->val($i,2));
于 2010-05-28T13:46:24.620 に答える
3

ここでは、等しくない演算子を使用する代わりに、同一でない演算子を使用して厳密な比較を使用します。

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

$data->val($i,2)が整数の場合==、両側を使用すると整数にキャストされ、ゼロを除いてすべての整数が期待どおりに機能するという結果が得られます。文字列 "RainFall" を 0 と比較した場合の==との違いの概要を次に示します。===

0 == "RainFall" : true
0 != "RainFall" : false
0 === "RainFall" : false
0 !== "RainFall" : true
于 2010-05-28T13:42:07.673 に答える
1

配列は 0 を false のように扱っていると思います。これは、配列に入らないことを説明している可能性があります。このようなものは機能しますか (整数を使用している場合)?

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

また

(float)($data->val($i,2);)
于 2010-05-28T13:50:17.687 に答える
0

問題はif文にあります。文字列を整数と比較しようとしています.PHPのドキュメントによると、両方が整数に型キャストされます。

数値を文字列と比較する場合、または比較に数値文字列が含まれる場合、各文字列は数値に変換され、数値として比較が実行されます。これらの規則は、switch ステートメントにも適用されます。比較が === または !== の場合、値だけでなく型も比較するため、型変換は行われません。

ここで詳細を読むことができますhttp://php.net/manual/en/language.operators.comparison.php .

更新: if ステートメントは、 PHPによって型キャストされる0ため、ステートメントが になる場合には機能しません。(int)"Rainfall"0if (0 != 0) { ... }

行番号を表す場合$i、1 ではなく 2 から始めてみませんか?

于 2010-05-28T13:58:29.740 に答える