• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:戻り値の型をそのまま制御したい)

PHPの関数から戻り値の配列に直接アクセスする方法

このQ&Aのポイント
  • PHPの関数から戻り値が配列の場合、そのまま配列要素に直接アクセスすることはできません。
  • 変数に保存することによって制御可能になりますが、変数に保存する必要がない場合には行えません。
  • PHPには直接配列要素にアクセスする文法は存在しません。

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

  • ベストアンサー
  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

普段、配列の戻り値はforeachなどでしか使わないので気にしてませんでしたね(汗 手元のphp5.5.3ですが、 echo getArray()[0]; 特に問題なく動きます。どういうエラーメッセージが表示されていますでしょうか?

naktak
質問者

お礼

今ほど、PHP5.4.28にて確認したところ、動作しました。 5.3系ではサポート外の文法だったようです・・・。 ありがとうございました。

naktak
質問者

補足

エラーは以下の通りです。 Parse error: syntax error, unexpected '[', expecting ',' or ';' in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\test.php on line 11 ご確認頂いた環境が5.5ということで、5.3の環境ではまだサポートされてなかった方法論なんですかね・・・。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • function の 戻り値の、値が入らない。

     一度作ったPHPを見直しています。 で、 globalを変数はどうしてもな時と、ここで みました。 私も、メモリーの節約や、きちんとしたスクリプトを 書くために、少なくしようと思うのですが、関数の 戻り値が、 Notice: Undefined variable: d in ○○○ 値がないと、注意がはいります。 (注意自体は、分かって出しています。) $a = 10; $b = 15; tst($a,$b); echo $d ; <?php function tst($a,$b){ $d = $a + $b ; echo $d ; return $d ; } ?> 関数内部の、echo $d;では、表示されるので、 間違ってはいないと思うんですが、どこが違うんで しょうか? HPや、本で調べてはみたんですが、下手の考え休むに にたり、かなーと、思ってきたので、もうお風呂に 入ろうかと。^^; よろしくお願いします。

    • ベストアンサー
    • PHP
  • 関数の戻り値が複数ある場合

    C言語初心者です。 関数の戻り値を返す場合、return 変数名;と記述しますよね。 配列を返す場合、ポインタを使用しないで返すにはどうしたらいいですか? 例えば合計と平均を計算する関数があり その結果を配列に入れてmainに返すなど。 以前他の方の質問のコメントに 配列の要素が固定であれば、構造体にして返す方法もあります。 struct array { int x[10]; }; struct array func() {  struct array a;  ...  return a; } -- とあったのですが、構造体の要素が全てint型ならば 配列ではダメなのですか?

  • phpの自作関数の戻り値について

    PHPで任意のCSVファイルをアップロードしてUTF6で別名保存するという関数です。 メインのupload.phpから require_once('UTF8CONV.php'); で呼び出しています。メインの部分は動きますが、戻り値(メッセージを変数で返したい)がうまくいかず並んでいます 以下UTF8CONV.php <?php //linuxのnkfコマンドでSJISからUTF8にファイル変換 //$INfile='sjistest.csv'; //$OUTfile='utf8.csv'; //パス自動取得する。 function convutf8($INfile,$OUTfile) { if(isset($_SERVER['DOCUMENT_ROOT'])||isset($_SERVER['PHP_SELF'])) { $PHPSELF=explode('/',$_SERVER['PHP_SELF']); $getpath= $_SERVER['DOCUMENT_ROOT'].$PHPSELF[1]; $command="nkf -w -Lw "."$getpath/"."upload/"."$INfile"." > "."$getpath/"."upload/"."$OUTfile"; //echo $command; exec($command); } else {$A="パス情報が取得できません"; return $A; } $filesize=filesize("$getpath/"."upload/"."$OUTfile"); if (!file_exists( "$getpath/"."upload/"."$OUTfile" )) { //echo "<br/>"; $A="ファイルが存在しません"; return $A; } else { $A="アップロードされたファイル".$OUTfile."は文字コードUTF8でファイルサイズは".$filesize."バイトです。"; return $A; } } ?> returnをechoに置き換えうると、表示されますが「return」でメイン(呼び出し側で、Echoしてもprint_rしても表示されません。CSVテキストとはアップされ、UTF8にOUTfileで指定した名称で保存されています。Returnの変数をJAVASCRIPTで情報window表示したいので、変数でほしいです。

    • 締切済み
    • PHP
  • PHP の スペースシップ演算子について

    お世話になります。 PHP の スペースシップ演算子について、使い方をネットで調べていましたら、次のようなコードを見つけました。 この中で、配列の並べ替えのための usort( ) のコールバック関数としている my_sort( ) の中で、<=> 演算子が使われています。この演算子は左側と右側のオペランドを比べて -1, 0, 1 のいずれかを返すということなのですが、この戻り値がどのように配列の要素を並べ替えるのに使われているのか、そのメカニズムが理解できません。 どなたか詳しく説明していただけると有難く思います。どうかよろしくお願いいたします。 function my_sort($a, $b) { return $a <=> $b; } $ary = array(4, 2, 8, 6, 1, 3); usort($ary, 'my_sort'); echo "<pre>"; print_r($ary); echo "</pre>"; この結果は 以下の様です。 Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 6 [5] => 8 )

    • ベストアンサー
    • PHP
  • 関数から呼び出される別の関数でも同じ配列を使うには

    配列をグローバル変数化して、使おうとしています。 <?php $strMoji=array("a","b","c","d","e","f","g","h","i"); $result=fun_disp(2); function fun_disp($i){ global $strMoji; echo $strMoji[$i]; return true; } ?> とすれば、$strMoji[$i];には、c が入っていると表示されました。 ところが、 <?php $result=fun_example(8); function fun_example($j){ echo $j; $strMoji=array("a","b","c","d","e","f","g","h","i"); $result=fun_disp(2); } function fun_disp($i){ global $strMoji; echo $strMoji[$i]; return true; } ?> とすると、$strMoji[$i]; が表示されなくなりました。 やりたいことは、「ある関数内で使っている配列を、その中から呼び出される 別の関数でも使いたい」ということです。 しかし、方法が分からないでいます。どのように書けばいいのでしょうか? ※関数に、2を投げたり8を投げたりしていますが、この値は適当です。

    • ベストアンサー
    • PHP
  • 関数戻り値が連想配列の場合

    こんにちわ。 PHP5について質問です。 あるユーザ関数の戻り値が連想配列である場合、 ユーザ関数の実行~戻値の特定のキーの値を取得 までを1行で取得する方法があれば教えてください。 例) function hoge() {  return array("fuga" => "1", "moge" => "2"); } ここで"moge"の値を一発で参照したいと考えています。 通常では、 $result = hoge(); print $result["moge"]; のようにしていますが、これを一行で実現できる方法はありますでしょうか。

    • ベストアンサー
    • PHP
  • 配列を関数の戻り値に使う

    こんばんわ。 PHP5で配列を関数の戻り値として返す方法がわからず今回投稿させていただきました。 配列は1次元で 1,2,3 の値が a という配列に格納されています。 呼び出された関数(testメソッド)で a配列を返し、bで受けようとするのですが、bの値には NULL となっています。 返す際に return $a; としており、 $b=$obj-〉test(); で、aをbで受けようと考えております。 配列を返す場合は普通にretuneで返すだけではダメなのでしょうか。 解決方法がお分りの方がいらっしゃいましたらご教授のほうおねがいします。

    • ベストアンサー
    • PHP
  • javascript関数の戻り値でphpの条件分岐

    こんばんは。 またまたプログラミングで詰まってしまいました・・・。 <?php    echo "<script> funcJS(); </script>"; //javascriptの関数。戻り値true/false    if(funcJS()の戻り値がtrueかどうか){       <~phpの処理~>     } ?> のようなプログラムがあったとして、funcJS()の戻り値の値によって、『phpの処理』を行うかどうかを決定したいのですがそのアルゴリズムが思いつきません。 色々と試行錯誤はやってみて、 (1)phpの変数にfuncJS()の戻り値を格納して、if文で条件分岐  $value = "<script> funcJS(); </script>";   しかし、これは$valueに戻り値を入れることができませんでした。 (2)javascript変数に戻り値を格納して、javascript内のif文で条件分岐 <?php    echo "<script> var value=funcJS(); </script>"; //javascriptの関数。戻り値true/false    echo "<script> if(value == 'true'){ </script>";       <~phpの処理~>    echo "<script> } </script>"; ?>  これも"}"がないと怒られてしまいました。 自分で思いつく限りは試してみたのですが、他に方法が思い浮かばず頭を抱えている状態です。 何か良い方法を知っている方、思いついた方、よろしくお願いします。

  • 多次元配列?配列のキー?変数の型?

    PHP勉強中のものです。 予定通りの動作にならんく四苦八苦しています。 どのように修正すれば予定通りになるのか考え方のアドバイスなどお願いします。 処理したいこと 変数$xxxの先頭の文字と最後の文字をsubstr()で取り出し$aaaと$bbbに別けそれぞれ代入しキーとして多次元配列に代入した配列要素を指定してechoで出力したい 試してみたこと $aaa1と$bbb1に直接整数を代入してみたところ、echoで出力された キーになる変数を整数型として変数に代入してみたが希望通りの動作にならなかった。 なにかアドバイス頂けると助かります。 $array = array( "0" =>array("あいうえお","かきくけこ"), "1" =>array("さしすせそ") ); $xxx = "0-1"; $aaa = substr($xxx,0,1); $bbb = substr($xxx,2); $aaa = (int)$aaa; $bbb = (int)$bbb; echo $array[$aaa][$bbb]; //出力されない $aaa1 = 0; $bbb1 = 1; echo $array[$aaa1][$bbb1]; //出力された $aaa = (int)$aaa; $bbb = (int)$bbb; echo $array[$aaa][$bbb]; //出力されない

    • ベストアンサー
    • PHP
  • 戻り値について

    実行PHPファイルから、モジュールPHPファイルを呼び出し、その戻り値を反映しています。 ---- ■実行PHPファイル $Command = "/usr/local/bin/php <<モジュールPHPファイル>>"; $Check = shell_exec($Command); if ($Check != 'NoError') { echo "エラー"; }else{ echo "エラーじゃない"; } ■モジュールPHPファイル …処理… echo "NoError"; exit; 結果: エラー ---- 必ずNoErrorを返すようにしているにも関わらず、 エラーの結果となってしまいます。 調べてみると、実行PHPファイルで文字列を受け取ると 8バイトとなっており、実際は「NoError」ではなく、「\nNoError」のように、 リターン値の前に改行コード(\n)が挿入されている状態となっています。 どちらのPHPファイルもEUC-JP、改行コードLF、 echo の前に無駄な文字列や、<?php及び?>の前後ろに改行もありません。 改行コードも一緒に返却されてしまう場合に、どのような理由が考えられるでしょうか。 お手数ですがご教示いただけますと幸いでございます。

    • ベストアンサー
    • PHP