2017-02-09 206 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

首先,你應該不使用$key$value再次(事實上,我認爲foreach ($value as $key=>$value)沒有工作)。

假設你想在同一位置呼應$data元素比你們$student陣列(即回聲$data[0]$student[0]),你應該使用的第一個關鍵:

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

由於roberto06你應該@陳述避免對嵌套的循環使用相同的變量。這些變量將被新值覆蓋。

的問題: 你可以請檢查是否$值字符串或根據結果,你可以寫其他的foreach循環或打印字符串數組

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

。 在你的第二個的foreach你foreaching此陣:

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

所以(第二)$關鍵是「Stdno」,「姓名」,「主題」,「品位」 和值將是「212」 ,「Lorem Ipsum」,「網絡」(這些是字符串)和$ data(這是數組)

要打印此數組,您需要創建新的foreach並僅在$ key ==「grade」使用內爆就可以了:

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