🔍

PHPの$haystackと$needleの由来

に公開
3

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

Stew EucenStew Eucen

haystack は、拙者がアプリケーションで好く使う変数名でして。意味を再確認する為に検索して、此方の記事に到達しましたでござる。

処で、タイトルや記事中の $heystack$haystack が正しいみたいッス。
編集リクエストがなかったので、返信にて報告でした。