2015-09-17 3 views
0

У меня есть массив $email вроде этого:расщепленный массив в разделенных запятыми значений

Array 
(
    [email_id] => [email protected] 
) 
Array 
(
    [email_id] => [email protected] 
) 
Array 
(
    [email_id] => [email protected] 
) 

Мне нужно этот массив, чтобы быть в этом формате

'[email protected]', '[email protected]', '[email protected]' // RESULT EXPECTED 

Я делаю это, чтобы получить мой результат:

$emails = implode(", " , $email); 

Но это приводит к следующим образом:

[email protected]@[email protected] // ACTUAL RESULT 

Что мне делать, чтобы получить результат?

+1

Его трудно использовать 'implode', так как все ключи массива одинаковы. 'implode' будет работать, если массив похож на' array ('mail1', 'mail2') '. В настоящее время используйте решение, предложенное @Hassan. –

+0

Возможный дубликат [php, как разбить массив с ключом и значением без foreach] (http://stackoverflow.com/questions/11427398/php-how-to-implode-array-with-key-and-value-without- foreach) –

ответ

0

Странно !! Он должен работать.

Как вы определили массив $email? Можете ли вы предоставить структуру кода?

Если у вас есть что-то подобное, то это определенно будет работать.

$email = array('email1','email2'); 
echo implode(", ",$email); 
1

Попробуйте

$email = array(
    array('email_id' => '[email protected]'), 
    array('email_id' => '[email protected]'), 
    array('email_id' => '[email protected]'), 
    array('email_id' => '[email protected]'), 
    ); 

foreach($email as $id) 
{ 
    echo "'".$id['email_id']."',"; 
} 
+0

Спасибо Хассану, это работает. но это может быть так: «[email protected]», «[email protected]», «[email protected]». Как сейчас это происходит как [email protected], [email protected], [email protected] Заранее спасибо – Aashi

+0

спасибо. Это дает результат с комой после последнего электронного сообщения. например: «[email protected]», «[email protected]», «[email protected]», что неверно. Мне не нужна запятая. – Aashi

0

Вы можете попробовать функцию Csv PHP для его

<?php 

$file = fopen("email.csv","w"); 

foreach ($yourArray as $value) 
    { 
    fputcsv($file,explode(',',$value)); 
    } 

fclose($file); 
?> 
0

Вы также можете использовать array_map уменьшить массив массивов в только массив строк.

$actualEmails = array_map (function ($e) { 
    return $e ['email_id']; 
}, $email); 
echo "'" . implode ("','", $actualEmails) . "'"; 
1

Я использую технику Хассан в:

$email = array(
    array('email_id' => '[email protected]'), 
    array('email_id' => '[email protected]'), 
    array('email_id' => '[email protected]'), 
    array('email_id' => '[email protected]'), 
); 

foreach($email as $id){ 
    $emails .= $id['email_id'].","; 
} 

$emails = substr($emails, 0, strlen($emails) -1); 

echo $emails; 

С помощью этого метода вы не будете иметь последнюю запятую.

Или вы можете использовать эту технику, которую я нашел here

$input = array(
    array('email_id' => '[email protected]'), 
    array('email_id' => '[email protected]'), 
    array('email_id' => '[email protected]'), 
    array('email_id' => '[email protected]') 
); 

echo implode(',', array_map(function ($entry) { 
    return $entry['email_id']; 
}, $input)); 
Смежные вопросы