同じ行の他の値に基づいて、返された SQL オブジェクトの値に対して変換/計算を実行しようとしています。これに関する適切な参照が見つかりません。おそらく、何を探しているのかわからないだけです。ほとんどの関数 (array_walk など) は、配列全体のすべての値に同じ変換を適用するためのもののようですか? 条件付きで特定の値だけを変更したい。
これが私の単純化された試みです。動作しませんが、私がやろうとしていることを示していると思います:
//------CREATE OBJECT-------//
$sql2 = "select internalname, value, adjboolean, adjfactor
FROM superfilters WHERE id > '0'";
$filterobject = $DBLink->query($sql2);
//------MODIFY OBJECT------//
$input1 = 350;
$input2 = 175;
foreach ($filterobject as $row){
if ($row['adjboolean'] = 1) {
$row['value'] += ($row['value'] * ($input1 / $input2 - 1) * $row['adjfactor']);
}
}
変更しようとしてもエラーは発生しませんが、行の値には影響しません。重複する配列/オブジェクトを作成するのではなく、上書きすることをお勧めしますが、関数を実行するために必要に応じて新しいものを作成できます。
助けてくれてありがとう!
----EDIT---- わかりました。これで、foreach が $filterobject のコピーに対して実際に機能することがわかりました。実際の結果オブジェクトを変更するには、参照する必要があります。以下が機能するはずです
foreach ($filterobject as &$row){
ただし、「参照による foreach ではイテレータを使用できません」というエラーが表示されます。だから、今私はそれに取り組んでいます...