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分隔符,我明白了,没有看到它出现,但我试图解释为什么它不能以调用函数的方式工作