[英]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
索引的解決方案。
您可以將foreach
與array_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.