2017-02-09 159 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 
}