2014-01-17 2 views
-1

Это следующий вопрос к моему предыдущему сообщению о публикации массива. Мне было рекомендовано объединить массивы, чтобы динамически генерировать результаты таблицы для электронной почты. До сих пор это выглядело так:Array Объединение и проводка

$emp_names = is_array($_POST['emp_name']) ? $_POST['emp_name'] : array($_POST['emp_name']); 
$emp_today_results = is_array($_POST['emp_today_result']) ? $_POST['emp_today_result'] : array($_POST['emp_today_result']); 
$emp_today_goals = is_array($_POST['emp_today_goal']) ? $_POST['emp_today_goal'] : array($_POST['emp_today_goal']); 
$emp_month_results = is_array($_POST['emp_month_result']) ? $_POST['emp_month_result'] : array($_POST['emp_month_result']); 
$emp_month_goals = is_array($_POST['emp_month_goal']) ? $_POST['emp_month_goal'] : array($_POST['emp_month_goal']); 
$emp_month_trends = is_array($_POST['emp_month_trend']) ? $_POST['emp_month_trend'] : array($_POST['emp_month_trend']); 

$emp_results = array_combine($emp_names, $emp_today_results, $emp_today_goals, $emp_month_results, $emp_month_goals, $emp_month_trends); 

Это собирает и объединяет все массивы. Тогда я не понимаю, как их использовать. Это не работает (я предполагаю, потому что нет «как» в скобках. Любая идея, как заставить его работать?

foreach ($emp_results) { 
     $htmlBody .= " 

     <tr> 
     <td>{$emp_name}</td> 
     <td>{$emp_today_result}</td> 
     <td>{$emp_today_goal}</td> 
     <td>{$emp_month_result}</td> 
     <td>{$emp_month_goal}</td> 
     <td>{$emp_month_trend}</td> 
     </tr>"; 

     } 
+0

'array_combine' принимает только 2 аргументов –

+0

о, я вижу Любое предложение о том, как вернуть каждое значение, которое принадлежит $ emp_name – Mike

+0

Совета:..? вы можете сократить свои линии, как это:' $ emp_xxx = (массив) $ _ POST ['emp_xxx']; '- он заставляет массив, где его нет. – cyberwombat

ответ

1
$values = explode('|', 'emp_name|emp_today_result|emp_today_goal|emp_month_result|emp_month_goal|emp_month_trend'); 
foreach ($values as $value) { 
    $$value = (array)$_POST[$value]; 
} 
for ($i = 0; $i < count($emp_name); $i++) { 
    $emp_results = array(); 
    foreach ($values as $value) { 
     $emp_results[] = ${$value}[$i]; 
    } 
    $htmlBody .= '<tr><td>' . implode('</td><td>', $emp_results) . '</td></tr>'; 
} 
+0

Ваш ответ хотя бы возвращает значения, но все значения возвращались в одной строке. – Mike

+0

Еще ничего. Значения фактически отображают все в одной строке со значениями, чередующимися. Вместо Майка 1 2 3 в первом ряду и Иоанна 4 5 6 во втором ряду, я получаю Майка Джона 1 4 2 5 3 6 всего в одном ряду. – Mike

+0

Моя ошибка, исправлено сейчас – Edakos

1

ли, как это .. Вам не нужно array_combine здесь

$emp_names = is_array($_POST['emp_name']) ? $_POST['emp_name'] : array($_POST['emp_name']); 
$emp_today_results = is_array($_POST['emp_today_result']) ? $_POST['emp_today_result'] : array($_POST['emp_today_result']); 
$emp_today_goals = is_array($_POST['emp_today_goal']) ? $_POST['emp_today_goal'] : array($_POST['emp_today_goal']); 
$emp_month_results = is_array($_POST['emp_month_result']) ? $_POST['emp_month_result'] : array($_POST['emp_month_result']); 
$emp_month_goals = is_array($_POST['emp_month_goal']) ? $_POST['emp_month_goal'] : array($_POST['emp_month_goal']); 
$emp_month_trends = is_array($_POST['emp_month_trend']) ? $_POST['emp_month_trend'] : array($_POST['emp_month_trend']); 

for($i=0;$i<count($emp_names);$i++) 
{ 
$htmlBody .= " 

     <tr> 
     <td>$emp_name[$i]</td> 
     <td>$emp_today_result[$i]</td> 
     <td>$emp_today_goal[$i]</td> 
     <td>$emp_month_result[$i]</td> 
     <td>$emp_month_goal[$i]</td> 
     <td>$emp_month_trend[$i]</td> 
     </tr>"; 
} 
echo $htmlBody; 
+0

Я пробовал это, но он все еще не работает. $ htmlBody отправляется по электронной почте PHPMailer, но поля по-прежнему пусты. – Mike

+0

Можете ли вы 'var_dump ($ htmlBody);' и знать информацию о выходе? –

+0

Ну, в этом письме много чего происходит. Это html-адрес электронной почты, созданный из значений, размещенных в другом файле. Var_dump дал мне строку (16317) "(мой html-адрес электронной почты здесь)" со всеми значениями, которые все еще отсутствуют. – Mike

Смежные вопросы