PHP: объединить несколько массивов в разделы

Я загружаю данные из листа .xlsx

И я конвертирую его в два массива

Первый столбец заголовка

Второй столбцы данных

я сделал это

$c = array_combine($headers, $data);

when i print $c

Array
(
[id] => Array
(
[0] => 1
[1] => 2
)

[f-name] => Array
(
[0] => Mohammed
[1] => Ziad
)

[s-name] => Array
(
[0] => Amer
[1] => Mohammed
)

[t-name] => Array
(
[0] => Hendy
[1] => Shokry
)
[cid] => Array
(
[0] => 89
[1] => 55
)
)

я хочу добиться такого результата

array(
[0] => Array(
[id] => 0
[f-name] => mohammed
[s-name] => amer
[t-name] => hendy
[cid] => 89
)
[1] => Array(
[id] => 1
[f-name] => ziad
[s-name] => mohammed
[t-name] => shokry
[cid] => 55
)
)

0

Решение

попробуй это:

$data = array(
'id' => array
(
0 => 1,
1 => 2
),
'f-name' => array
(
0 => 'Mohammed',
1 => 'Ziad'
),
's-name' => array
(
0 => 'Amer',
1 => 'Mohammed'
),
't-name' => array
(
0 => 'Hendy',
1 => 'Shokry'
),
'cid' => array
(
0 => 89,
1 => 55
)
);
//
$result = array();
foreach($data as $k=>$v){
for($i=0;$i<count($data['id']);$i++){
//$v[$i] = ($k!='id') ?: $i;// uncomment for reset id from 0
$result[$i][$k] = $v[$i];
}
}
var_dump($result);

результат:

array (size=2)
0 =>
array (size=5)
'id' => int 1
'f-name' => string 'Mohammed' (length=8)
's-name' => string 'Amer' (length=4)
't-name' => string 'Hendy' (length=5)
'cid' => int 89
1 =>
array (size=5)
'id' => int 2
'f-name' => string 'Ziad' (length=4)
's-name' => string 'Mohammed' (length=8)
't-name' => string 'Shokry' (length=6)
'cid' => int 55
0

Другие решения

Попробуйте что-то вроде этого:

for ($index = 0; &index < 2; ++$index)
{
thing['id']     = $index;
thing['f-name'] = $c['f-name'];
thing['l-name'] = $c['s-name'];
thing['t-name'] = $c['t-name'];
thing['cid']    = $c['cid'];

$newArra y[$index] = thing;
}
0

Мне нравится включать «причудливые» функции массива, такие как array_walk и array_map, когда у меня есть такая возможность:

Инициализируйте ваши данные

$data = [
'id' => [
0 => 1,
1 => 2
],
'f-name' => [
0 => 'Mohammed',
1 => 'Ziad'
],
's-name' => [
0 => 'Amer',
1 => 'Mohammed'
],
't-name' => [
0 => 'Hendy',
1 => 'Shokry'
],
'cid' => [
0 => 89,
1 => 55
]
];

Преобразовать данные

$result = [];
array_walk($data['id'],
function($f, $i) use ($data, &$result){
$result[$i] = array_map(function($e) use ($i){
return $e[$i];
}, $data);
}
);

Вывести результат

var_dump($result);

array(2) {
[0]=>
array(5) {
["id"]=>
int(1)
["f-name"]=>
string(8) "Mohammed"["s-name"]=>
string(4) "Amer"["t-name"]=>
string(5) "Hendy"["cid"]=>
int(89)
}
[1]=>
array(5) {
["id"]=>
int(2)
["f-name"]=>
string(4) "Ziad"["s-name"]=>
string(8) "Mohammed"["t-name"]=>
string(6) "Shokry"["cid"]=>
int(55)
}
}
0
По вопросам рекламы [email protected]