Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.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_Arrays - Fatal编程技术网

Php 将数组用于数组推送,而不是字符串

Php 将数组用于数组推送,而不是字符串,php,arrays,Php,Arrays,我正在使用以下代码: $patients_with_site = []; if (in_array($zip_code, $current_zip_codes)) { echo "The referral id is: ".$referral_id; array_push($patients_with_site,$referral_id); print_r($patients_with_site); } 然后,我尝试使用以下代码将其推送到CSV文件: $fp = fopen('pa

我正在使用以下代码:

$patients_with_site = [];
if (in_array($zip_code, $current_zip_codes)) {
  echo "The referral id is: ".$referral_id;
  array_push($patients_with_site,$referral_id);
  print_r($patients_with_site);
}
然后,我尝试使用以下代码将其推送到CSV文件:

$fp = fopen('patients_with_site.csv', 'w');

foreach ($patients_with_site as $fields) {
    fputcsv($fp, $fields);
}

fclose($fp);

我收到一个错误消息,说
$patients\u with_site
是一个字符串,
fputcsv
需要一个数组。

如果
fputcsv
需要数组-提供数组:

foreach ($patients_with_site as $fields) {
    fputcsv($fp, [$fields]);
}

$patients\u with_site
的每个值都是字符串而不是数组。

您的
$patients\u with_site
的元素是字符串

fputcsv
的第二个参数必须是一个数组,因此除非您为
$patients\u with_site
设置了多维数组,否则不应循环使用它

因此,如果您只调用
fputcsv($fp$patients\u with\u site)
,它应该可以工作


请参见PHP

小点:使用站点[]=$reflection\u id执行一个简单的
$patients\u会更快
这样,当您运行foreach($patients\u with_site as$fields)时,不会出现函数调用开销,
$fields
变量将是一个字符串,因为
$patients\u with_site
是一个字符串数组,您实际希望CSV文件看起来像什么?可能您打算做的是
fputcsv($fp,$patients\u with_site);
如果没有循环,第一段代码也不在数组中,那么将id推入数组有什么意义呢??只有一个,就像高地人一样,使用
fputcsv($fp$patients\u with\u site)
将所有患者写在一行上,用逗号分隔。您可以指定一个PHP_EOL分隔符,我明白了,没有看到它出现,但我试图解释为什么它不能以调用函数的方式工作