重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

index.phpから別ファイルのclass.phpに配列を渡して、
クラスを実行したいと考えています。

//-----------------------------------
//-- index.php ---
<?php

class hiragana {
public $a_ka_sa;
function init() {
$this->a_ka_sa = array();
}
}
$j_hiragana = new hiragana();

$val[0] = array('a'=>'あ' , 'i'=>'い' , 'u'=>'う' , 'e'=>'え' , 'o'=>'お');
$val[1] = array('ka'=>'か' , 'ki'=>'き' , 'ku'=>'く' , 'ke'=>'け' , 'ko'=>'こ');
$val[2] = array('sa'=>'さ' , 'si'=>'し' , 'su'=>'す' , 'se'=>'せ' , 'so'=>'そ');
$j_hiragana->a_ka_sa[0] = (object) $val[0];
$j_hiragana->a_ka_sa[1] = (object) $val[1];
$j_hiragana->a_ka_sa[2] = (object) $val[2];

var_dump($j_hiragana);
//-----------------------------------


このようになっているプログラムを


//-----------------------------------
//-- index.php ---
<?php
$val[0] = array('a'=>'あ' , 'i'=>'い' , 'u'=>'う' , 'e'=>'え' , 'o'=>'お');
$val[1] = array('ka'=>'か' , 'ki'=>'き' , 'ku'=>'く' , 'ke'=>'け' , 'ko'=>'こ');
$val[2] = array('sa'=>'さ' , 'si'=>'し' , 'su'=>'す' , 'se'=>'せ' , 'so'=>'そ');
//-----------------------------------


配列の部分だけindex.phpに残して


//-----------------------------------
//-- class.php ---
<?php

class hiragana {
public $a_ka_sa;
function init() {
$this->a_ka_sa = array();
}
}
$j_hiragana = new hiragana();

//--------------
//$val[0] = array('a'=>'あ' , 'i'=>'い' , 'u'=>'う' , 'e'=>'え' , 'o'=>'お');
//$val[1] = array('ka'=>'か' , 'ki'=>'き' , 'ku'=>'く' , 'ke'=>'け' , 'ko'=>'こ');
//$val[2] = array('sa'=>'さ' , 'si'=>'し' , 'su'=>'す' , 'se'=>'せ' , 'so'=>'そ');
//--------------
$j_hiragana->a_ka_sa[0] = (object) $val[0];
$j_hiragana->a_ka_sa[1] = (object) $val[1];
$j_hiragana->a_ka_sa[2] = (object) $val[2];
//-----------------------------------


class.phpに移して、


index.phpを開くとclass.phpのクラス?に配列を渡しクラス?を実行する
プログラムを作りたいと考えていますが、
うまく配列を渡してクラス?を実行できません。

どのようにすればよいのでしょうか?

A 回答 (1件)

イマイチ何をしたいのか分かりませんが…



オブジェクトや配列を別スクリプトにGETやPOSTで送信して復元したいときに役立つのはserialize/unserializeです。
ただこれはNULLバイトを含む可能性があるのでBASE64エンコードを忘れずに。

【渡す側】
$str = base64_encode(serialize($data));
//$strを何らかの方法で送信(file_get_contentsが一番簡単)

【受け取る側】
//$strに受け取った値を代入しておく
$data = unserialize(base64_decode($str));

file_get_contentsでPOSTする方法はこちら
http://d.hatena.ne.jp/ryster/20070907/1189148449



書いたあとに気付いたんですけど、この件に関してはわざわざこんなことしなくても、
index.phpの末尾に

require('class.php');

を書けばいいだけの気がする…
requireしたスクリプトに関しては、既に存在している変数などは全て共有されます。(同じ名前空間扱い)
    • good
    • 0
この回答へのお礼

解答ありがとうございます。

ちょっと 話がずれているような気がします。

ネットで検索しているとそういうなのが出てきますが
どうも違うような気がします。


//---------------------
require('class.php');
//---------------------

して 基礎的なソースで出来ると思います。


オブジェクト指向初心者なため 再度 基礎に戻って
考えたいと思います。

またよろしくお願いします。

お礼日時:2013/05/03 21:12

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