アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHPを勉強中の初心者です。PHPで、ツリー構造を再帰関数を用いて実装するプログラムを作成し、そのツリーを表示しようとているのですが、どうもよくわかりません。
このプログラムの挙動としては、以下でクリエイトしたTreeオブジェクトを、preorder(トップダウン、左側から)で出力させるもので、期待値は以下のとおりです。

(期待値)
preorder:
1
2
4
5
3
6
7

(クリエイトされたオブジェクト)
$myTree = new Tree(1,
new Tree(2, new Tree(4), new Tree(5)),
new Tree(3, new Tree(6), new Tree(7)));

=========サンプルプログラム================================
#!/usr/bin/env php
<?php
class Tree {
var $top;
var $left;
var $right;

    #コンストラクタを定義はこれであっているでしょうか。
function Tree($top, $left, $right){
$this ->top = $top;
$this ->left = $left;
$this ->right= $right;
};


function preorder( ){
        #preorder() メソッドを実装方法がよくわかりません。

}


}

$myTree = new Tree(1,
new Tree(2, new Tree(4), new Tree(5)),
new Tree(3, new Tree(6), new Tree(7)));

function printPreorder($tree) {
echo "preorder:\n";
$tree->preorder(create_function('$v', 'echo "$v\n";'));
}

printPreorder($myTree);
?>

A 回答 (2件)

>うまく動作しません。



どううまく動作しないか、想像もつきません。
すくなくともphpinfo()がまともに動かないようであれば
別のプログラムも同様にまともに動かないような気がするのですが・・・。

>PHPはUNIXのルートサーバにしかインストールされていない

おっしゃる用語の意味がよくわからないのですが、
そのサーバーの管理者にPHPがまっとうに動かない旨今回の事例を踏まえて
確認してみてはいかがですか?

この回答への補足

<?
phpinfo()
?>

を記載したファイルinfo.phpというファイル名で保存しWebブラウザ経由で実行したところ、白い画面になってしまいました。セキュリティの観点から、この関数が削除されているといったこともあるのでしょうか?
その他のPHPファイルはうまく動いています。

うちの大学の環境では、PHPはルートサーバにインストールされていて、各自の作業用Webディレクトリは、ルートサーバにマウントされるようになっていて、Apache経由であればPHPを実行できるのですが、コマンドライン経由では、パスが切られていないため、直接コマンドを実行することができないのです。

バージョンについては、確認してみます。ありがとうございました。

補足日時:2008/07/28 12:45
    • good
    • 0
この回答へのお礼

失礼しました。作成した、info.phpのファイルパーミッションの問題でした。修正して再度実行したところ「PHP Version 5.1.6」であることがわかりました。

お礼日時:2008/07/28 13:11

classの実装はバージョンによって大きく異なります。


どのバージョンのPHPか明示してください

この回答への補足

バージョンの確認はどのように行えばよいのかご教示いただけますか?
ネット上で検索して、以下のコードをver.php ファイルに保存して実行してみましたが、うまく動作しません。 ちなみに、PHPはUNIXのルートサーバにしかインストールされていないため、コマンドラインでの確認は不可能です。よろしくお願いいたします。

<?
phpinfo()
?>

補足日時:2008/07/28 10:52
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!