PHP4を使っています。知っている人には当たり前のことかもしれませんが、教えてください。

hoge.phpにて、var[$i][$g]といった二次元配列を作成しました。
この二次元配列の中身をfoo.phpでも使いたいのですが、hoge.phpからfoo.phpに配列の中身を持っていくにはどうすればいいでしょうか。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/01/26 18:04:48
  • 終了:--

回答(4件)

id:r8820004 No.1

r8820004回答回数7ベストアンサー獲得回数02005/01/26 18:31:59

ポイント25pt

::hoge.php

<?php

$var=array();

?>

::foo.php

<?php

include(”hoge.php”);

print_r($var);

?>

的外れですか?趣旨がわからなかったのですが、

それなりに考えてみました。

的外れならごめんなさい

id:takeuchi_k

ありがとうございます。

includeでできるのかなあ・・・

試してみます。

2005/01/27 15:15:43
id:nazooooo No.2

nazooooo回答回数26ベストアンサー獲得回数02005/01/26 18:37:05

ポイント25pt

http://www.php.net/manual/ja/

PHP: PHP マニュアル - Manual

とりあえずこちらをブックマークしてください。

http://www.php.net/manual/ja/ref.session.php

PHP: セッション処理関数(session) - Manual

例題の場合は

hoge.php:

><blockquote>

<?php

session_start();

if(register_globals) {

session_register(’var’);

}else{

$_SESSION[’var’]=$var;

}

// ...

?>

foo.php:

<?php

session_start();

if(register_globals) {

// $varはそのまま引継ぎ

}else{

$var=$_SESSION[’var’];

}

// ...

?>

</blockquote><

こんな感じでどうでしょうか。

id:takeuchi_k

registar_globalsがあれば、$varはそのまま引き継ぎ、なければsessionにいれるということでしょうか。

まずは、registar_globalsについてマニュアル嫁ですね。

2005/01/27 15:17:22
id:hebe No.3

hebe回答回数43ベストアンサー獲得回数02005/01/27 00:24:56

ポイント25pt

http://php.net/

PHP: Hypertext Preprocessor

方法は何通りかあります。

大事なのはその言語やプログラミングの考え方を学び、適切な方法を選択する事です。

問題は foo.php と hoge.php の関係です。

web アプリケーションは URL がトリガーとなるため URL を一単位として考える事になります。

ある一連の処理が hoge.php と foo.php に分かれており変数を引き継ぎたいのであれば $GLOBALS が使えます。「変数 スコープ GLOBALS」でググって下さい。

しかし関数やクラスは別ファイルに分離する事があっても処理はひとつのファイルにまとめるのが定石であり、こういった需要が発生する事自体良い状態ではありません。

もう一つは一連の処理をまたいで引き継ぎたい場合、つまり hoge.php と foo.php は互いに異なる URL がトリガーとなる処理である場合は、配列の中身の機密度が問題になりますが、情報の取得経路を見直すなり、それでも本当に変数を引き継ぐ必要があるのであれば、シリアライズしてセッションに格納するといった方法が選択出来ます。PHP マニュアルで serialize/unserialize について調べてみてください。

大切なのは

・変数のスコープを理解する

・web アプリケーションの定石を知り、どうすれば良いコードが書けるのかを学び構成を見直す

事であり、これが出来ていれば質問のような状態はレアケースとして処理出来るようになるはずです。

id:takeuchi_k

ありがとうございます。

たしかに、あまりきれいな処理とはいえないと思いますし、「本当にこの処理が必要なのか?」ということも検討しています。

丁寧にお教えいただき、ありがとうございます。

2005/01/27 15:19:17
id:typista No.4

typista回答回数359ベストアンサー獲得回数72005/01/27 09:51:07

ポイント25pt

http://php.planetmirror.com/manual/ja/langref.php

PHP: 言語リファレンス - Manual

foo.phpで、以下の記述をすれば可能です。

---

require_once ”hoge.php”;

$arr = $GLOBALS[’var’];

---

グローバル変数の配列では試したことが

ありませんが、関数の戻り値で配列を返す

記述を考慮すると、シンボル解決ができれば

問題ないようです。

→ $arr[0][0]で参照できると思います。

※上記URLはリファレンスなので、期待する

 答えを導くには少しコツ(慣れ)が必要です。

id:takeuchi_k

ありがとうございます。

2005/02/01 12:00:51

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません