2017-02-09 3 views
-2

Как получить доступ к самому внутреннему массиву? сорт дает мне Примечание: Массив для преобразования строки в /scripts/array.php на линии 34 класса: ArrayPHP Многомерные смешанные массивы

$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 вы должны избегайте использования одинаковых переменных для вложенных циклов. Эти переменные будут перезаписаны новыми значениями.

На вопрос: Вы можете проверить Wether $ значение, строка или массив

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

на основе результата вы могли бы написать еще один цикл Еогеасп или строку печати. в вашем втором Еогеаспа вы foreaching этого массива:

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

так (второй) $ ключ будет «Stdno», «имя», «субъект», «класс» и значения будут «212» , «Lorem Ipsum», «Networking» (это строки) и $ data (это массив)

Чтобы напечатать этот массив, вам нужно создать новый foreach и использовать его только тогда, когда $ key == «grade» или use impode на нем:

if($key == "grade"){ 
    $i = implode(', ', $value); 
    //print or something 
} 
Смежные вопросы