🔍
PHPの$haystackと$needleの由来
PHPのドキュメントを読むと、$haystackと$needleという変数名がよく登場します。例えば、array_search関数では以下のように定義されています。
array_search ( mixed $needle , array $haystack [, bool $strict = FALSE ] ) : mixed
内容を見れば何を表しているかは理解できますが、なぜこのような変数名なのか気になったので調べてみました。
haystackとneedleの由来
まず英語の意味を確認します。
-
haystack: 干し草の山 -
needle: 針
この2つを組み合わせたa needle in a haystackという英語のイディオム(慣用句)が存在します。Bizmates Channelによると、「干し草の山の中から縫い針を探すようなもの」という意味で、非常に困難なことを見つけるという比喩表現です。
PHPの検索関数に当てはめると、以下のように表現できます。
-
$haystack: 干し草の山のような配列(検索対象) -
$needle: 縫い針のような値(探したい値)
この変数名の分かりやすさはさておき、由来は理解できました。
使用例
実際の会話での使用例です。
A: I can't find my wallet.(財布が見つからないんだ)
B: That's like looking for a needle in a haystack.(それはまるで干し草の山の中から縫い針を探すようなものだ)
まとめ
PHPのドキュメントに頻出する$haystackと$needleは、英語のイディオムa needle in a haystack(干し草の山から針を探す=非常に困難なことを見つける)が由来です。
検索対象を$haystack(干し草の山)、探したい値を$needle(針)と表現することで、検索という処理を直感的に表しています。
Discussion
haystack は、拙者がアプリケーションで好く使う変数名でして。意味を再確認する為に検索して、此方の記事に到達しましたでござる。
処で、タイトルや記事中の
$heystackは$haystackが正しいみたいッス。編集リクエストがなかったので、返信にて報告でした。
ご報告、ありがとうございます!
修正しました!
👍✨