2017-02-09 7 views
-2

どのように最奥の配列にアクセスできますか?グレードは私に通告を与えている:文字列への変換アレイを/scripts/array.phpにライン34 グレード:PHP多次元混合配列

$data = array(); 
$data[0] = 78; 
$data[1] = 34; 
$data[2] = 87; 
$student = array(0 => array(
     "Stdno" => "212", 
     "name" => "Lorem Ipsum", 
     "subject" => "Networking", 
     "grade" => $data 
    ), 
    1 => array(
     "Stdno" => "212", 
     "name" => "Jimmy Shu", 
     "subject" => "Informatics", 
     "grade" => $data 
    ), 
    2 => array(
     "Stdno" => "212", 
     "name" => "Amet Dolor", 
     "subject" => "Discrete Combinatorics", 
     "grade" => $data 
    ) 
); 
foreach ($student as $key => $value) { 
    foreach ($value as $key => $value) { 
     echo "<b>{$key}</b>: {$value}"; 
     echo "<br />"; 
    } 
    echo "<br />"; 
} 
+0

グレードは文字列ではありません –

+0

あなたは何を相手にしたいですか?あなたは学年が必要ですか? – rahulsm

+0

@rahul_mはい私はグレード –

答えて

2

まず、あなたは本当には(実際には、私はforeach ($value as $key=>$value)が機能しなかったと思った)再び$key$valueを使用しないでください。あなたがすべきroberto06 @で述べたように

foreach ($student as $key => $value) { 
    foreach ($value as $key2 => $value2) { 
     echo "<b>{$key2}</b>: "; 
     if ($key2 == 'grade') 
      echo $value2[$key]; 
     else 
      echo $value2; 
     echo "<br />"; 
    } 
    echo "<br />"; 
} 
+0

これが完璧に動作したい –

1

まず、foreachに同じキーを使用して避けるだけコメントしてくださいアレイ。 $valueのようです

あなたの問題を解決するには、それは配列だが、それをエコーし​​ようとすると、これを代わりに使用することができます。すべての

echo "<b>{$key}</b>: " . json_encode($value);

0

あなたは($student[0]用すなわちエコー$data[0])、あなたが最初のキーを使用する必要がありますあなたの$student配列に比べて同じ位置に$data要素をエコーし​​たいと仮定すると、入れ子になっているサイクルに同じ変数を使用しないでください。これらの変数は新しい値で上書きされます。質問へ

: あなたは天気をの$値をチェックすることができ、あなたは別のforeachのサイクルや印刷文字を書くことができた結果に基づいて、文字列または配列

is_array($val) || is_string($val) 

です。あなたはこの配列をforeachingている2番目のforeachで :

array(
    "Stdno" => "212", 
    "name" => "Lorem Ipsum", 
    "subject" => "Networking", 
    "grade" => $data 
) 

ので、(二)$キーは、「件名」、「Stdno」、「名前」になり、「グレード」 と値が「212」になります、 "Lorem Ipsum"、 "Networking"(文字列)、$ data(これは配列)

この配列を印刷するには、新しいforeachを作成し、$ key == "grade"それにimplodeを使用してください:

if($key == "grade"){ 
    $i = implode(', ', $value); 
    //print or something 
}