2016-06-11 7 views
1

1つのインデックスが一定の場合にアレイ全体を印刷する方法。3次元が一定の場合にアレイ全体を印刷する方法

の目的を理解するために私はある配列構造が 第3次元と3次元の配列の下でトップ3行を格納することになっている

3 2 1 
1 2 3 
3 2 1 
1 2 3 
3 2 1 
1 2 3 

入力して、この配列

$actionF = array(
    "enemyHlth" => array(array()), 
    "enemyBlts" => array(array()) 
); 

をしただけで一定の "敵の健康"を3Dの下の3つの間に置いて 3次元 "敵の弾丸"と同じ配列。そして、これらの2つの3D配列がActionF

と呼ばれる単一の配列に格納されている両方の私はそれを

for($level=0;$level<$n;$level++){ 
    $actionF["enemyHlth"] = array ($level => fscanf($_fp,"%d\t%d\t%d\n") 
            );    
} 

for($bullets = 0;$bullets<$m; $bullets++){ 
    $actionF["enemyBlts"] = array ($bullets => fscanf($_fp,"%d\t%d\t%d\n") 
            );   
} 
print_r($actionF); 

出力

3 2 1 

を印刷しようとすると、今私はそれが最後のインデックスを印刷していると思いますI/Pを超える。どのように 二次元配列を3次次元が単なる定数であるか、または何か他のものがある場合、私は行方不明ですか?

+0

私は道あなたのことを考えますデータを読むのが悪いです。 'print_r($ actionF);'あなたが読んでいないので、配列に期待通りのものが含まれていないと思うでしょう。ファイルを正しく。私はあなたが正しいコードを書くのを手伝ってもらうことができますが、私はあなたが何を達成したいか分かりません。 ** $ actionF ["enemyHlth"] **と** $ actionF ["enemyBlts"] **はすべてがうまくいくと仮定して、最後に含めるべきですか?また、** $ n **と** $ m **は何ですか?ところで、* n *の前に* $ *がありません:* $ bullets Andreyu

+0

ハッカーのランクからのチャレンジタイプのプログラムです。あなたはそれを見つけることができます "A Super Hero" by ma5termind – phpNoob

+0

最初のループで毎回 'enemyHlth'要素に追加していないので、単純に上書きしています。配列に追加したい場合は、 '$ actionF [" enemyHlth "] [] =新しい要素;' $ actionF ["enemyHlth"] [$ key] =新しい要素;インデックス付き配列または連想配列を作成しています。あなたの質問は、配列がどのように見えているのかを言わない。 – Barmar

答えて

1

私はあなたのコードを書き直したと私はそれがこのようにうまく機能だと思う:

まず、入力:

$actionF = array(
     "enemyHlth" => array(), 
     "enemyBlts" => array() 
     ); 

for($level=0;$level<$n;$level++){ 

    $line = fgets($_fp); 

    $processed = explode(" ", $line); 

    if ($line != false) { 
     $actionF["enemyHlth"][$level] = $processed; 
    } 

} 

for($bullets = 0;$bullets<$m; $bullets++){ 

    $line = fgets($_fp); 

    $processed = explode(" ", $line); 

    if ($line != false) { 
     $actionF["enemyBlts"][$bullets] = $processed;   
    } 
} 

そして、ここでは出力です:

for($i=0;$i<$n;$i++){ 
    for($j=0;$j<$m;$j++){ 
     print $actionF["enemyHlth"][$i][$j]; 
    } 
    print "\n"; 
} 
+0

あなたはfgetsを使用しましたが、必要な整数ではなく文字列を返します。 – phpNoob

+0

入力が適切な形式で既に定義されているため、行をチェックする理由を知りたいですか? – phpNoob

+0

PHPは、整数のように見える整数文字列に自動キャストします。このコードを書くことができます: '<?php $ x =" 12 "; $ x = $ x + 5; echo $ x; ?> 'と出力されます。したがって、文字列であれば問題ありません。余分な安全をしたい場合は、強制的に整数にキャストすることができます。これを見てください:http://stackoverflow.com/questions/8529656/how-do-i-convert-a-string-to-a-number-in-php。あなたの2番目の質問について、私は習慣からラインをチェックしています。実際のプログラミングでは、入力を信頼することはできません。チェックする必要があります。あなたのケースでは、入力が正しいことを確認できるので、テストを削除することができます。 – Andreyu

関連する問題