概要
仕事でたまにPHPを書く機会が生じているが、頻繁に書くわけでないし、Copilotで自動補完してもらってしまっていることもありなかなか身につかない。本当に今さら?というような基礎的な内容になるが、調べた内容を備忘のためにメモする。
foreachでindexもとる
foreach($nums as $index => $value){
//処理
}
この場合、$nums
が配列、 $value
が取り出される要素、 $index
がindexになる。これ何回も見ているのだけど、いつも自分で書くとなると調べてしまう。
配列にその要素が存在するか確認して、存在したらindexを返す
存在しなかったらfalseを返す
$key = array_search($target,$array);
!= と !==
===
はデータ型まで含めて一致しているかみる、というところまではわかるのだが、
==
だと0とnullとfalseと一致扱いになるそう。(つまり、0
== false
はtrueになる。)empty
も 0はtrue扱いだし本当に0の扱いがよくわからない...。
つまり、上記の array_search
でindex=0の要素が当てはまった場合、 != で比較してしまうと、一致する要素がない扱いになってしまう。(そもそも存在しなかったらfalseじゃなくて-1とかを返してほしいと思ってしまうのは私だけ?)
// 誤り
$key = array_search($target,$array);
if($key != false){
// これだと$key=0の時、ifの中に入らない
}
// 正しい
$key = array_search($target,$array);
if($key !== false){
// これだと$key=0の時、ifの中に入る
}
この記事がわかりやすい。
https://blog.katty.in/51