簡體   English   中英

如何在php中推送多維數組中的值

[英]how to push values in multidimensional array in php

$classType數組我正在存儲類明智的類型,例如具有類型 A 的類 1 和具有類型的類 2 是 A 和具有類型的類 3 是 B

$clollege['studentDetails']數組我想根據類從$classType數組中推送類型是什么類型

$clollege['studentDetails']年級和$classType類都是相同的。

預期產出

Array
(
    [0] => Array
        (
            [grade] => 2
            [hobbies] => Array
                (
                    [0] => A
                    [1] => B
                )
        [type] => A

        )

    [1] => Array
        (
            [grade] => 2
            [hobbies] => Array
                (
                    [0] => A
                )
           [type] => A

        )

    [2] => Array
        (
            [grade] => 3
            [hobbies] => Array
                (
                    [0] => C
                )
        [type] => A

        )

我已經嘗試過但沒有達到我預期的答案,請任何人更新我的答案,我已經在下面的部分中發布了我的代碼。 我知道這是一個簡單的問題,如果有人發布你的,以便我可以從這里學習如何推動

我的代碼

<?php
$classType = [
    ["class" => "1", "type" => "A"],
    ["class" => "2", "type" => "A"],
    ["class" => "3", "type" => "B"]
];

$clollege['studentDetails'] = [
   ["grade" => "2", "hobbies" => ["A" , "B"] ],
   ["grade" => "2", "hobbies" => ["A" ] ],
   ["grade" => "3", "hobbies" => [ "C" ] ]
];

foreach ($classType as $item) {
        $clollege['studentDetails'][$item['class']]['type'] = $item['type'];
}

echo "<pre>";
print_r($clollege['studentDetails']);exit;
?>

更新代碼部分

$studentList['studentDetails'] = [
    [ "group" => ["id" => 1 , "grade" => "2"] ],
    [ "group" => ["id" => 2 , "grade" => "2", ] ],
    [ "group" => [ "id" => 3, "grade" => "3"] ]
];

您可以在array_walk()的幫助下嘗試以下方法。

$classType = [
    ["class" => "1", "type" => "A"],
    ["class" => "2", "type" => "A"],
    ["class" => "3", "type" => "B"]
];

$clollege['studentDetails'] = [
    ["grade" => "2", "hobbies" => ["A" , "B"] ],
    ["grade" => "2", "hobbies" => ["A" ] ],
    ["grade" => "3", "hobbies" => [ "C" ] ]
];

$classType = array_column($classType, 'type', "class");
array_walk($clollege['studentDetails'], function(&$item) use($classType) {
    $item['type'] = $classType[$item['grade']];
});

echo '<pre>';
print_r($clollege['studentDetails']);
echo '</pre>';

工作演示

您不能在單個或子數組元素中使用grade作為鍵 2 次,我已經提到了使用type索引的解決方案。

您可以將foreacharray_reduce一起array_reduce

 foreach($clollege['studentDetails'] as $key => &$val){
    $grade       = $val['grade'];
    $val['type'] = array_reduce($classType, function($r, $item) use ($grade){
      return ($item['class'] == $grade) ? $item['type'] : $r;
    }); 
  }
  print_r($clollege);

更新

更改代碼

$grade = $val['grade'];

$grade = $val['group']['grade'];

如果有機會為這兩種情況使用

$grade  = isset($val['group']['grade']) ? $val['group']['grade'] : $val['grade'];

工作演示: https : //3v4l.org/5HGLk

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM