こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

array関数につきまして

すみません。PHPの初心者でございます。

下記のコードの中に (array)$anq_list とありますが、
個人には、arrayの使い方は、array(---)のような感じだと思っていましたが、
下記のサンプルでは、(array)となっております。
これはどのような意味になるのでしょうか。

なお、(array)をつけたバージョンと、つけないバージョンでテストしたところ、
どちらもかわりませんでした。
個人的には、無くてもいいかと思いましたが、何か、別の意図はありますでしょうか。

<?php
//libsフォルダにある共通関数を読み込む
require_once("../../../../libs/function.php");

//初期化関数を呼び出す
init();

//ログイン状態をチェックする関数を呼び出す
loginCheck();

//データベースに接続する関数を呼び出す
$db = db_connect();

//アンケートデータを取得する
$sql = "SELECT * FROM anq_t ORDER BY create_datetime DESC";
$anq_list = $db->getAll($sql,DB_FETCHMODE_ASSOC);

//好きな動物の「,」区切りのデータを配列データに変換する処理を行う
foreach ($anq_list as $key => $value ) {
$anq_list[$key]["animal"] = explode(",",$value["animal"]);
}

//Smartyを生成
$smarty = new MySmarty();
$smarty->assign("anq_list",$anq_list);
$smarty->assign("sex_value",getSexList());
$smarty->assign("age_value",getAgeList());
$smarty->assign("animal_value",getAnimalList());
$smarty->display("admin/anq_result.tpl");
?>

以上、お手数をお掛けしますが、よろしくお願い致します。

投稿日時 - 2008-08-06 14:42:15

QNo.4232106

困ってます

質問者が選んだベストアンサー

>下記のサンプルでは、(array)となっております。

見た範囲ではなってませんが・・・

>何か、別の意図はありますでしょうか。

いわゆる明示的な型宣言ですからきちんと理解しているのであれば
必ずしも表記が必要というわけではないです
たとえば・・・・
<?
foreach($x as $val){
print 1;
}
?>
とすると$xは配列ではないと理解されるのでエラーになりますが

<?
foreach((array)$x as $val){
print 1;
}
?>
とすればエラーは出ません(といっても1は出力されませんが)
変数の型が不明確で問題になることはよくあることなので、
中級レベル以上のプログラムでつかうものと考えてください。

投稿日時 - 2008-08-06 15:07:17

お礼

ありがとうございます!!

>下記のサンプルでは、(array)となっております。
見た範囲ではなってませんが・・・

→すみません。。誤って記載してしまいました。

>変数の型が不明確で問題になることはよくあることなので、
中級レベル以上のプログラムでつかうものと考えてください。

なるほど!よく理解できました!!ありがとうございます!m(__)m

投稿日時 - 2008-08-06 15:40:41

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

おそらく質問者さまと、私がいま勉強中の書籍(PHP)は、
同じだと思います。
私も、まったく同じ疑問を抱いておりました。
そこでOKWEBで検索をかけましたところ、
ピンポイントで同じご質問に当たりました。

有難うございました。解決しました。
回答をくださった方にも感謝です。
明示的な型宣言なのですね。予測はしておりましたがすっきりとしました。有難うございます。

投稿日時 - 2008-09-13 00:27:33

あなたにオススメの質問