とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

関数内で自分自身を渡せない??

とーっても素人くさいエントリ。次のコードがエラーになる

<?php
function f($array) {
  if (is_array($array)) array_walk($array, $f);
}
f([]);
Notice: Undefined variable: f in C:\xampp\htdocs\hogehoge.php on line 3

どうすればエラーを出さずに f を array_walk に渡せるんでしょうか…。
"}" が来て初めて f が定義されるからダメなんでしょうけど。

ん? こう?

<?php
function f($array) {
  if (is_array($array)) array_walk($array, function(){ f(); });
}
f([]);

動いたけどダサすぎないだろうか…。関数内で自分自身を渡すもっとよい方法あるのかなぁ…。

<?php
function f() {
  // OK
  f();
}

function g() {
  // NG...
  array_walk([], $g);
}

不思議。

分かった

いろいろ間違ってたっぽい。array_walk の使い方間違ってる、コールバックの引数間違ってたし、コールバックは関数名を文字列で渡すんだし。
うーん。全然PHP分かってないな。

<?php
function f($value, $key) {
  echo('Value:' . $value . ', Key:' . $key . "\n");
}
$array = ['a','b','c'];
array_walk($array, 'f');