array_walkとclouserを使うと正常な結果が出ない?
解決したいこと
今日試験ですが、なぜか問題集のarray_walkとclouserを使った問題で意図通りの答えにならず
どこで間違っているのかがわからないのでご教授お願いしたいです。
ちなみにPJO-200 PHP5技術者認定上級試験問題集のp600にあるものです。
発生している問題・エラー
出力が315になるはずなのに下記の通り0を出力します
0
ログを見ると下記が出てます。
PHP Warning: array_walk() expects parameter 2 to be a valid callback, no array or string given in /Applications/MAMP/htdocs/index.php on line 8
該当するソースコード
<?php
function getTotal($products,$tax){
$total = 0;
$callcack = function($price,$product_name) use ($tax_ratio,&$total){
$total = $price * (1.0 + $tax);
return $total;
};
array_walk($products,$callback);
return $total;
}
$itemlist = array(
'apple' => 100,
'banana' => 200
);
$tax_ratio = 0.05;
print getTotal($itemlist,$tax_ratio);
?>
自分で試したこと
つまりarray_walkで配列とかがないとかいわれてんですけど、上記の文法間違ってないのでなぜかわからず。。。
文法ミスがあるのかについては調べたんですが、問題ないという結果に。。。
半角スペースとかタブとかも大丈夫か調べたんですがなく、、、。
echoを入れたりしてて試しましたが、結果は同じでした。
簡単なarray_walkでも試しましたが、それはできるのに、なぜかこれだけ0になるんですよね。。。
上記の理屈はわかるので、試験はいけるんですが、なぜかうまく動かないので、何でだろう、と思って
質問させていただきました。
皆さんのお力をお借りしたいです。