У меня есть структура массива, как показано ниже.
Array ( [1] => Dept1 [2] => Dept2 [3] => Dept3 )
И у меня есть другой массив, как показано ниже.
Array ( [1] => Array ( [user1] => 58 [user3] => 75 ) [2] => Array ( [user6] => 162 ) [3] => Array ( [user7] => 2 [user8] => 126 [user9] => 148 ) )
я хочу
Array ( [Dept1] => Array ( [user1] => 58 [user3] => 75 ) [Dept2] => Array ( [user6] => 162 ) [Dept3] => Array ( [user7] => 2 [user8] => 126 [user9] => 148 ) )
Числами во втором массиве являются номера отделов. И их значения присутствуют в первом массиве. Я хочу заменить номер отдела во втором массиве значением из первого массива.
Я пытался с array_replace (), но не добился успеха.
Пожалуйста помоги
заранее спасибо
Если у второго массива меньше элементов, чем ваш массив поиска или если ключи не совпадают с порядком, вам нужно сначала сопоставить значения ключей, а затем объединить массивы с помощью array_combine()
.
array_combine(array_map(function($key) use ($depts) { return $depts[$key]; // translate key to name }, array_keys($dept_values)), $dept_values));
В противном случае вы можете сразу их объединить:
array_combine($depts, $dept_values);
См. Также: array_map()
Попробуй это. В основном соединение и взрыв будут выполнять вашу работу.
<html> <head> <title>Copy to new array</title> </head> <body> <?php $dept= array('Dept1', 'Dept2', 'Dept3', 'Dept4'); $temp= join(",",$dept); $department=explode(",",$temp); echo "The first element in new array is: " . $department[0]; echo " and the second element in new array is: " . $department[1]; ?> </body> </html>
Этот код работает как ожидалось для меня:
Код PHP:
<?php print_r(array_combine($firstArray, $secondArray)); ?>
Выход массива:
Array ( [Dept1] => Array ( [user1] => 58 [user3] => 75 ) [Dept2] => Array ( [user6] => 162 ) [Dept3] => Array ( [user7] => 2 [user8] => 126 [user9] => 148 ) )