🐵

falseからの配列自動生成が非推奨になっていたのでsqliteで困った

2023/01/07に公開

お絵描き掲示板noReitaをつくっています、さこつです。

今回表題の件で困ったことが解決したので記事にしようと思います。

何が起きたのか

実はPHP8.1で起きてたらしいんですけど、(falseから配列の自動生成が非推奨になりました。)

自分はsqlでこういうことをしていました。

//最新コメント取得
$sqlw = "SELECT * FROM tlog WHERE thread=0 ORDER BY tid DESC LIMIT 1";
$msgw = $db->prepare($sqlw);
$msgw->execute();
$msgwc = $msgw->fetch();
$msgwc["tid"] = 0;
$msgwc["age"] = 0;
$msgwc["tree"] = 0;

するとここでエラーが出たんですね。

falseがはいるsql文でやったこと

tidでfalseのエラーがでるらしい。自動生成が非推奨なら手動で生成すればいいや、ということでこうしました。

//$msgwc["tid"] = 0;
$msgwc["tid"] == false ? 0 : 0;

きもちわるい三項演算子です。ifでよかったかも。

厳密でないのは厳密でないfalseの可能性もあったからです。

結論

true/falseからの配列の自動生成は手動でやればいい。


追記

有識者に教えていただいた。

$msgwc = $msgw->fetch() ?: [];

これでfalseを空配列にできるようだ。

Discussion