4

私はあなたに本当に簡単な質問があります:

Excelシートからデータを読み取り、それを連想配列に変換したいと思います。ただし、一部のセルに値が指定されていない場合があります。したがって、これが発生した場合は、配列の値を0に設定します。

今、私は三項演算子でそのようにしています、そして私は今日それを発見したことをうれしく思います:

(isset($excel->sheet[0]['cells'][$row][$value]) ? $excel->sheet[0]['cells'][$row][$value] : 0)

この場合、繰り返しを短くする理由はありますか?それは動作しますが、それはそれほどきれいではありません:(

4

2 に答える 2

3

これはお勧めしませんが、私なら次のようにします (PHP 5.3):

(@$excel->sheet[0]['cells'][$row][$value] ? : 0);

エラー抑制演算子はめちゃくちゃですが、この場合、抑制できるのは未定義変数に関するよく知られた通知だけです。

別のオプション ( Álvaro G. Vicarioが述べたように)への単純なキャストが可能ですint(as NULLcasts to 0):

(int)@$excel->sheet[0]['cells'][$row][$value];
于 2013-02-21T10:44:06.690 に答える
0

もう 1 つのオプションは、そのような変数の存在をチェックする関数を作成することです。おそらく、少しオーバーエンジニアリング、オーバーキル、またはやりすぎです –:

function iset($array, $output) {
    $args = func_get_args();
    $val = $array;
    for ($i = 1; $i < count($args) - 1; $i++) {
        if (!isset($val[func_get_arg($i)])) {
            return func_get_arg(func_num_args() - 1);
        }
        $val = $val[func_get_arg($i)];
    }
    return $val;
}

次に、次のように関数を使用します。

$var = iset($excel->sheet, 0, 'cells', $row, $value, "DEFAULT_VALUE");
于 2013-02-21T10:59:38.083 に答える