данные отдельного массива PHP с запятой - PullRequest
1 голос
/ 16 мая 2019

на основании запроса:

  $query = $db->query("SELECT id, email, status, enviados FROM 
  contactos LIMIT 0,500");

где я получаю электронные письма и сохраняю их в массиве. Я хочу разделить их и напечатать их через запятую, а затем поместить их в переменную, где результат будет примерно таким:

$ variable = a1, a2, a3;

Я пытаюсь сделать с Implode, но это не работает, я уже видел другие проблемы, но я не могу найти решение

это мой код

$query = $db->query("SELECT id, email, status, enviados FROM 
contactos LIMIT 0,500");

$count = $query->num_rows;


while($row = mysqli_fetch_array($query)){
    $datos_seleccionados[] = array(
        'emails' => $row['email']
    );
}   

for ($i = 0; $i <= $count; $i++) {
    echo implode(",", $datos_seleccionados[$i]);
}

Ответы [ 3 ]

2 голосов
/ 16 мая 2019

Вы должны сделать это таким образом

$datos_seleccionados = [];
while($row = mysqli_fetch_array($query))
{
  $datos_seleccionados[] = $row['email'];
}
echo implode(",", $datos_seleccionados);
1 голос
/ 16 мая 2019

Это не работает, потому что вы храните ваши данные в многомерном массиве здесь:

$datos_seleccionados[] = array(
        'emails' => $row['email']
    );

Использование echo implode(",", $datos_seleccionados[$i]); внутри for выглядит также проблемой, это означает, что вы развертываете массив с запятой, вы можете просто сделать это, как подсказал @Rakesh:

Решение (я использую этот код с некоторой оптимизацией) :

if($count > 0){ // if count exist
    $datos_seleccionados = array(); // initiate
    while($row = mysqli_fetch_array($query)){
        $datos_seleccionados[] = $row['email'];
    }
    echo implode(",",$datos_seleccionados);
}
else{
    echo "No result found";
}
1 голос
/ 16 мая 2019

Вы можете использовать array_column для этого:

пример кода:

$data = [
    ['title' => 'foo', 'val' => 1],
    ['title' => 'bar', 'val' => 5],
    ['title' => 'foobar', 'val' => 9]
];

echo implode(',', array_column($data, 'val'));

здесь мы просто группируем элементы по ключу (в данном случае val), а затем просто взорвать этот возвращенный массив

, так что в вашем случае:

echo implode(',', array_column(mysqli_fetch_array($query), 'email'));
...