Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有逗号的单独PHP数组的数据_Php_Mysql_Arrays_Implode - Fatal编程技术网

带有逗号的单独PHP数组的数据

带有逗号的单独PHP数组的数据,php,mysql,arrays,implode,Php,Mysql,Arrays,Implode,根据查询: $query = $db->query("SELECT id, email, status, enviados FROM contactos LIMIT 0,500"); 当我收到电子邮件并将它们存储在一个数组中时,我想将它们分开,用逗号打印,然后将它们放入一个变量中,结果如下: $ variable = a1, a2, a3; 我试图处理内爆,但它不起作用,我已经看到了其他问题,但我找不到解决方案 这是我的密码 $query = $db->query("S

根据查询:

  $query = $db->query("SELECT id, email, status, enviados FROM 
  contactos LIMIT 0,500");
当我收到电子邮件并将它们存储在一个数组中时,我想将它们分开,用逗号打印,然后将它们放入一个变量中,结果如下:

$ variable = a1, a2, a3;
我试图处理内爆,但它不起作用,我已经看到了其他问题,但我找不到解决方案

这是我的密码

$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]);
}
$query=$db->query(“从中选择id、电子邮件、状态、环境
接触限值0500“;
$count=$query->num\u行;
while($row=mysqli\u fetch\u数组($query)){
$datos_selectionados[]=数组(
'emails'=>$row['email']
);
}   

对于($i=0;$i您需要这样做

$datos_seleccionados = [];
while($row = mysqli_fetch_array($query))
{
  $datos_seleccionados[] = $row['email'];
}
echo implode(",", $datos_seleccionados);

你需要这样做

$datos_seleccionados = [];
while($row = mysqli_fetch_array($query))
{
  $datos_seleccionados[] = $row['email'];
}
echo implode(",", $datos_seleccionados);
您可以为此使用:

示例代码:

$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'));
您可以为此使用:

示例代码:

$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'));

它不起作用,因为您正在此处将数据存储到多维数组中:

$datos_seleccionados[] = array(
        'emails' => $row['email']
    );
使用
echo introde(“,”,$datos_seleccionados[$i]);
中查找另一个问题,这意味着,您正在使用逗号内爆数组,您可以按照@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";
}

它不起作用,因为您正在此处将数据存储到多维数组中:

$datos_seleccionados[] = array(
        'emails' => $row['email']
    );
使用
echo introde(“,”,$datos_seleccionados[$i]);
中查找另一个问题,这意味着,您正在使用逗号内爆数组,您可以按照@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";
}

为什么你会选择while和then for?我这样做是因为while我将数据添加到数组中,for的思想是用逗号分隔,如果不注意SQL是无序的,那么使用LIMIT而不使用ORDER by几乎没有意义如果你只需要一个逗号分隔的字符串,我建议你查看我的SQL GROUP_CONCAT function为什么要使用while和then for?我这样做是因为while我将数据添加到数组中,而for的思想是用逗号分隔数据,如果不注意的话,您建议我使用逗号分隔数据。请注意,SQL是无序的,所以如果您只需要一个逗号分隔的字符串,那么使用LIMIT而不使用ORDER by几乎没有意义d建议查看MySQL GROUP_CONCAT函数这是for/while解决方案中更好的答案,而+1用于添加检查这是for/while解决方案中更好的答案,而+1用于添加检查