2016-06-27 4 views
-1

Я строю массив в цикле и результаты ниже него для целей тестирования:доступа значение массива в цикл

$email_array[]= array(
      'email' => $fnd_result->fields['email'], 
      'name' => $fnd_result->fields['name'] 
     ); 
//$emailArray 
(
[0] => Array 
    (
     [email] => [email protected] 
     [name] => test1 
    ) 

[1] => Array 
    (
     [email] => [email protected] 
     [name] => test2 
    ) 
    ) 
$snd_cnt = count($email_array); 

затем на событии эта функция срабатывает:

for ($x = 0; $x < $snd_cnt; $x++){ 
    $send_to_name = $email_array[$x]['name']; 
    $send_to_email = $email_array[$x]['email']; 
    $email_subject = "Your Forklift Has Arrived!"; 
// Prepare Text-only portion of message 
    $text_message = OFFICE_FROM . "\t" . $bname . "\n" . 
    'As you requested, we are notifying you that we have a new forklift in our inventory' . "\n" ."\n" . 
    'We added a: ' . "\n" ."\n" . 
    'Year: ' . $forklift_year . "\n" . 
    'Make: ' . $forklift_make . "\n" . 
    'Model: ' . $products_model . "\n" . 
    'Please visit our website at ojlforklifts.com or call us at (305) 836-4337 ' ."\n" ."\n" ."\n" . 
    $extra_info['TEXT']; 
// Prepare HTML-portion of message 
    $html_msg['EMAIL_GREETING'] = $email_subject; 
    $html_msg['EMAIL_WELCOME'] = 'We recieved a Forklift within your specs.'; 
    $html_msg['EMAIL_FIRST_NAME'] = $send_to_name; 
    $html_msg['EMAIL_MESSAGE_HTML'] = '<table> ' . 
    '<tr><td>Make: </td> <td>' . $forklift_make . '</td></tr>' . 
    '<tr><td>Capacity: </td> <td>' . $forklift_capacity . 'Lbs</td></tr>' . 
    '<tr><td>Fuel: </td> <td>' . $fuelM . '</td></tr>' . 
    '<tr><td>Tires: </td> <td>' . $tireM . '</td></tr>' . 
    '<tr><td>Price: </td> <td>' . $products_price . '</td></tr>' . 
    '<tr><td colspan="2"><img src="http://ojlforklifts.com/images/' . $products_image . '" width="350"/></td></tr>' . 
    '</table>'; 


    zen_mail($send_to_name, $send_to_email, $email_subject, $text_message, $name, $email_address, $html_msg ,'fork_notify'); 
} 

$ send_to_email всегда возвращает пустой

$ send_to_name всегда возвращает пустой

So в пробл em это то, что я не могу получить доступ к двум переменным в цикле. Если я echo $email_array[0]['email'] с индексом hardcoded, он даст мне результат [email protected], но в минуту, когда я положил положительную переменную для индекса, $email_array[$x]['email'], результат пуст.

Может ли кто-нибудь указать мне правильное направление? Я даже пробовал цикл while, и он тоже не работает.

+1

Невозможно воспроизвести проблему. Пожалуйста, убедитесь, что вы показываете нам свой полный и реальный код. – Rizier123

+0

Пожалуйста, сделайте вашу проблему более ясной, я не совсем понимаю, что не так с вашим кодом. Если у вас есть переменная befor this, она будет перезаписана каждый раз. Btw – JRsz

+0

Ваш код перезапишет имя и адрес электронной почты. Первый раз это электронная почта [0], второй раз это электронная почта [1], и в третий раз она будет пустой. Я думаю, если вы замените for loop на 'for ($ x = 0; $ x <= $ snd_cnt; $ x ++) {' он все равно перезапишет, но сохранит [1] – Andreas

ответ

2

Вы можете использовать foreach цикл:

foreach ($emailArray as $key => $value) { 
    $send_to_name = $value['name']; 
    $send_to_email = $value['email']; 
} 
+0

И что это должно измениться? Он должен работать в любом случае. – Rizier123

+0

Это ничего не меняет, это точно то же самое, только с более медленным исполнением – JRsz

+0

Не совсем, он будет только зацикливать фактические индексы. Я думаю, что код OPs перебирает дополнительное время, которое очищает переменные, потому что у него есть '<', а не '<=' – Andreas

1

send_to_name переменного, получая последний элемент из массива. Это потому, что вы снова и снова назначаете значение этой переменной. Вы можете использовать цикл foreach.

foreach ($emailArray as $key => $value) { 
    $send_to_name = $value ['name']; 
    $send_to_email = $value ['email']; 
    //rest code to send email. 
} 
+0

см. Выше ошибка при использовании этого кода – JLongBeard

+0

Вы должны попробовать эхо-значения. Где я пишу // остальная часть кода, добавьте эту строку кода. echo $ send_to_name. ":". $ send_to_email. "
"; –

+0

PHP Предупреждение: неверный аргумент, предоставленный foreach(), является ошибкой – JLongBeard

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

  • Нет связанных вопросов^_^