人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHP4を使っています。知っている人には当たり前のことかもしれませんが、教えてください。
hoge.phpにて、var[$i][$g]といった二次元配列を作成しました。
この二次元配列の中身をfoo.phpでも使いたいのですが、hoge.phpからfoo.phpに配列の中身を持っていくにはどうすればいいでしょうか。

●質問者: takeuchi_k
●カテゴリ:コンピュータ
✍キーワード:hoge PHP 二次元 作成 配列
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● r8820004
●25ポイント

http://yahoo.co.jp/

Yahoo! JAPAN

::hoge.php

<?php

$var=array();

?>

::foo.php

<?php

include(”hoge.php”);

print_r($var);

?>

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

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

的外れならごめんなさい

◎質問者からの返答

ありがとうございます。

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

試してみます。


2 ● nazooooo
●25ポイント

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><

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

◎質問者からの返答

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

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


3 ● hebe
●25ポイント

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 アプリケーションの定石を知り、どうすれば良いコードが書けるのかを学び構成を見直す

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

◎質問者からの返答

ありがとうございます。

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

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


4 ● typista
●25ポイント

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

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

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

---

require_once ”hoge.php”;

$arr = $GLOBALS[’var’];

---

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

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

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

問題ないようです。

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

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

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

◎質問者からの返答

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ