hoge.phpにて、var[$i][$g]といった二次元配列を作成しました。
この二次元配列の中身をfoo.phpでも使いたいのですが、hoge.phpからfoo.phpに配列の中身を持っていくにはどうすればいいでしょうか。
Yahoo! JAPAN
::hoge.php
<?php
$var=array();
?>
::foo.php
<?php
include(”hoge.php”);
print_r($var);
?>
的外れですか?趣旨がわからなかったのですが、
それなりに考えてみました。
的外れならごめんなさい
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についてマニュアル嫁ですね。
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 アプリケーションの定石を知り、どうすれば良いコードが書けるのかを学び構成を見直す
事であり、これが出来ていれば質問のような状態はレアケースとして処理出来るようになるはずです。
ありがとうございます。
たしかに、あまりきれいな処理とはいえないと思いますし、「本当にこの処理が必要なのか?」ということも検討しています。
丁寧にお教えいただき、ありがとうございます。
http://php.planetmirror.com/manual/ja/langref.php
PHP: 言語リファレンス - Manual
foo.phpで、以下の記述をすれば可能です。
---
require_once ”hoge.php”;
$arr = $GLOBALS[’var’];
---
グローバル変数の配列では試したことが
ありませんが、関数の戻り値で配列を返す
記述を考慮すると、シンボル解決ができれば
問題ないようです。
→ $arr[0][0]で参照できると思います。
※上記URLはリファレンスなので、期待する
答えを導くには少しコツ(慣れ)が必要です。
ありがとうございます。
ありがとうございます。
includeでできるのかなあ・・・
試してみます。