Динамически создавая массив со значением индекса в php
Привет я хочу создать массив динамически со значением индекса и значения ключа.
здесь $head - имя массива, а $values - значение ключа.
$head = Array ( [0] => Dis_id [1] => Dis_Desc [2] => Dis_Per [3] => Dis_val )
$values = Array ([0] => Dl-Dis1 [1] => Discount [2] => 7.500 [3] => 26.25 )
Array ([0] => Dl-Dis2 [1] => Discount [2] => 2.500 [3] => 73.13 )
foreach($values as $valu => $key)
{
$value = $value + array($head[$valu]=>$key.",");
}
echo '<pre>';
print_r($value);
Выход будет как
Array
(
[Dis_id] => Dl-Dis2,
[Dis_Desc] => Discount,
[Dis_Per] => 2.500,
[Dis_val] => 73.13,
)
Но вывод мне нужен следующий
Array
(
[Dis_id] => Dl-Dis1,
[Dis_Desc] => Discount,
[Dis_Per] => 7.500,
[Dis_val] => 26.25,
)
Array
(
[Dis_id] => Dl-Dis2,
[Dis_Desc] => Discount,
[Dis_Per] => 2.500,
[Dis_val] => 73.13,
)
я не знаю, как это сделать, пожалуйста, помогите мне
обновить, чтобы получить мой вывод
$values = array(array (0 => 'Dl-Dis1', 1 => 'Discount', 2 => 7.500, 3 => 26.25 ), array (0 => 'Dl-Dis2', 1 => 'Discount', 2 => 2.500, 3 => 73.13 )) ;
спасибо всем
2 ответа
Решение
Вам может понадобиться использовать array_combine. Находясь под петлей, объедините $head
и сами значения для него и положить его в новый контейнер. Рассмотрим этот пример:
$head = Array ( 0 => 'Dis_id', 1 => 'Dis_Desc', 2 => 'Dis_Per', 3 => 'Dis_val', );
$values = array(array (0 => 'Dl-Dis1', 1 => 'Discount', 2 => 7.500, 3 => 26.25 ), array (0 => 'Dl-Dis2', 1 => 'Discount', 2 => 2.500, 3 => 73.13 )) ;
$new_values = array();
foreach($values as $value) {
$new_values[] = array_combine($head, $value);
}
Вы можете сделать это так:
$head = array ( 0 => 'Dis_id', 1 => 'Dis_Desc', 2 => 'Dis_Per', 3 => 'Dis_val' );
$values = array(array (0 => 'Dl-Dis1', 1 => 'Discount', 2 => '7.500', 3 => 26.25 ),
array (0 => 'Dl-Dis2', 1 => 'Discount', 2 => 2.500, 3 => 73.13 ));
$result = array();
foreach($values as $value) {
$res = array();
foreach ($value as $key => $val) {
$res[$head[$key]] = $val;
}
$result[] = $res;
}
echo '<pre>';
print_r($result);