Вы говорите, что получаете 0,1,2 в ключах заголовка .. et c ....
foreach($data as $key=>$value){
$table .= '<td>'.$key.'</td>';
}
Это потому, что ваши ключи верхнего уровня:
0
1
2
3..
На следующем уровне у вас есть эти ключи:
Push to Web
Category
Name
etc..
В этом фрагменте кода вы добавляете innervalue
-data ( pu sh к веб-значению, значению категории, имя-значение et c ...) ...
foreach($data as $value){
$table .= '<tr>';
foreach($value as $innerkey=>$innervalue){
$table .= '<td>'.$innervalue.'</td>';
}
$table .= '</tr>';
}
... эти значения находятся на том же уровне, что и нужный вам ключ. Следовательно, $innerkey
- это ключ, который вы хотите добавить в заголовок :
foreach($data as $value){
$table .= '<tr>';
foreach($value as $innerkey=>$innervalue){
$table .= '<td>'.$innerkey.'</td>';
}
$table .= '</tr>';
}
Таким образом, logi c в основном выглядит примерно так:
$table = '<table border="1" id="datatable">';
foreach($data as $key=>$value){
$table .= '<tr>';
foreach($value as $innerkey=>$innervalue){
$table .= '<td>'.$innerkey.'</td>';
}
$table .= '</tr>';
}
foreach($data as $value){
$table .= '<tr>';
foreach($value as $innerkey=>$innervalue){
$table .= '<td>'.$innervalue.'</td>';
}
$table .= '</tr>';
}
$table .= '</table>';
Основываясь на вышеупомянутом логе c - вы можете сделать это, чтобы достичь того, чего хотите:
ОБНОВЛЕНИЕ
Теперь, когда я понимаю, что все ключи не существуют в все элементы. Вы можете сделать так:
//Because you have different keys in different item
//you could recreate each item in the array
//Based on the the $use_keys array here
//(add all keys you want to use and $use_keys set the order of the keys in
//each item!)
$use_keys = ['pushweb', 'attribute set', 'category', 'name'];
//Go through the whole array and recreate it with keys given
//in $use_keys
foreach($data as $key=>$value){
//Create a new array with key values from array $use_keys
$new_arr = [];
foreach($use_keys as $apk_item) {
//Add key/value to the new array. If value already exist
//in the $data[key] then use that value, else just empty string
$new_value = '';
if (isset($data[$key][$apk_item])) {
$new_value = $data[$key][$apk_item];
}
$new_arr[$apk_item] = $new_value;
}
//Recreate the data[key] part of the original data array
$data[$key] = $new_arr;
}
//Then same code as before
$row = 0;
$table = '<table border="1" id="datatable">';
foreach($data as $value){
$table .= '<tr>';
if ($row == 0) {
foreach($value as $innerkey=>$innervalue){
$table .= '<td>'.$innerkey.'</td>';
}
}
$table .= '</tr><tr>';
foreach($value as $innerkey=>$innervalue){
$table .= '<td>'.$innervalue.'</td>';
}
$table .= '</tr>';
$row++;
}
$table .= '</table>';