これが私が見ているコードです。
_foreach ($header as $idx => $field) {
if (stripos($field, 'foo') !== false) {
$cols['foo'] = $idx;
} else if (stripos($field, 'bar') !== false) {
$cols['bar'] = $idx;
} else if (stripos($field, 'brr') !== false) {
$cols['brr'] = $idx;
} else if (stripos($field, 'ffo') !== false) {
$cols['ffo'] = $idx;
}
}
_
申し訳ありませんが、コードをきれいにフォーマットする方法もわかりません。そのためのヒントをいただければ幸いです。
私は自分よりはるかに賢い人によって書かれたコードを見ているので、すべてをif(stripos($foo))
に変更するだけの第一印象を信頼する傾向はありませんが、なぜこのようにするのですか?
答えは、PHP "false"値は、空の配列、空の文字列、NULL、整数0などの少数の値で満たすことができるということです。空を参照してください。 ()完全なリストの関数ページ:
したがって、これは常に誤った結果をもたらします:
if(strpos("abc", "a")) {
echo "Yes";
} else {
echo "No";
}
「a」は最初の位置(インデックス0)で発生するため、PHPは「if(0)」をfalseと見なします。
Strposが干し草の山で針を見つけられない場合、ブール値のFALSEが返されます。これは、型と値の両方をチェックするトリプルイコール演算子でチェックしたいものです。比較演算子に関するドキュメントを参照してください
http://www.php.net/manual/en/language.operators.comparison.php
PHPでは、!==は同じタイプのAND値ではないことを意味します。
Stripos()がfalse以外(および正確には 'false'であり、ゼロではない)を返す場合、位置が0でint(0)が返されたとしても、何かが見つかったことを意味します。 ==との標準比較を行う場合、0とfalseは等しくなりますが、ID ===演算子を使用する場合は等しくないため、stripos()が確かに何かが見つかったのは、!==を使用してfalseの値と型を比較することです(同一ではありません。つまり、strpos()の戻り値の型と値が同じです)。
このようなものが維持するのがより簡単であるならば、Dunno。あなたがそれらのif条件で何か他のことをするかどうかに依存します。ただし、構成ファイル、db、関数への引数として渡すなどでキーを設定できます。
$keys = array(
'foo',
'bar',
'brr',
'ffo',
);
foreach ($header as $idx => $field) {
foreach ($keys as $key) {
if (stripos($field, $key) !== false) {
$cols[$key] = $idx;
break;
}
}
}