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

php言語初心者です。よろしくお願いします。
下のコードで、n=0のときは分かります。そして、n=1のときは、配列の要素になることも分かります。
ですが、なぜ、n=2以降の時に、a[0]で配列の配列を表示できるのかが分かりません。
どなたかご教授お願いします。

<pre>
<?php
function dims($a, &$n)
{//1
if( is_array($a) )
{//2
$n++;
echo "a=".$a[0]." n=".$n."?n";
dims($a[0], $n);
//$a[0]がどの深さまであるか調べるということかな?
}//2
return "n=".$n;
}//1

function dim($a)
{
static $n;
$n = 0;
return dims($a, $n);
}

$dat0=1;
$dat1=array(3,2);
$dat2=array(array(3,2));
$dat3=array(array(array(3), array(2) ) );

echo dim($dat0)."?n";
echo dim($dat1)."?n";
echo dim($dat2)."?n";
echo dim($dat3)."?n";

?>
</pre>


●質問者: gbs01
●カテゴリ:コンピュータ 学習・教育
✍キーワード:echo PHP コード 初心者 教授
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Mook
●60ポイント ベストアンサー

配列の要素に、数値が入ることもありますし、文字列が入ることもありますし、配列が入ることもあります。

print_r という関数がありますので、そちらを使用して配列全体の構造を表示してみると少しはわかりやすいでしょうか。

<?php
function dims($a, &$n)
{
if( is_array($a) )
{
$n++;
echo "   :n=[".$n."]<br>\n    ";
print_r( $a );
echo "<br>\n";
dims($a[0], $n);
//$a[0]がどの深さまであるか調べるということかな?
}
return "n=".$n;
}

function dim($a)
{
static $n;
$n = 0;
return dims($a, $n);
}

$dat0=1;
$dat1=array(3,2);
$dat2=array(array(3,2));
$dat3=array(array(array(3), array(2) ) );

echo "dim0:".dim($dat0)."<br>\n";
echo "dim1:".dim($dat1)."<br>\n";
echo "dim2:".dim($dat2)."<br>\n";
echo "dim3:".dim($dat3)."<br>\n";
?>

上記の実行結果は次のようになります。

赤い部分が配列の先頭要素 $a[0] です。

dim0:n=0

:n=[1]

Array ( [0] => 3 [1] => 2 )

dim1:n=1

:n=[1]

Array ( [0] => Array ( [0] => 3 [1] => 2 ) ) )

:n=[2]

Array ( [0] => 3 [1] => 2 )

dim2:n=2

:n=[1]

Array ( [0] => Array ( [0] => Array ( [0] => 3 ) [1] => Array ( [0] => 2 ) ) )

:n=[2]

Array ( [0] => Array ( [0] => 3 ) [1] => Array ( [0] => 2 ) )

:n=[3]

Array ( [0] => 3 )

dim3:n=3

◎質問者からの返答

ありがとうございます。たぶん大丈夫だと思います。

関連質問


●質問をもっと探す●



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