因此,我正在解决一个问题,该问题需要将值数组转换为字符串,以便可以将其显示为excel文档。但是,当我尝试运行导出时,仍然不断收到“数组到字符串转换”错误。代码是
$counties = "";
if(isset($forms->form_info['county'])){
for($i = 0; $i < count($forms->form_info['county']); $i++){
if(is_int($i / 10) && $i != 0){
$counties .= $forms->form_info['county'][$i] . ",\n";
} elseif($i == (count($forms->form_info['county']) - 1)) {
// Keep getting the error on the line below
$counties .= $forms->form_info['county'][$i] . " ";
} else {
$counties .= $forms->form_info['county'][$i] . ", ";
}
}
}
我已经在县以及要使用的表单元素上完成了一个gettype的dd操作,并且都以字符串形式出现,所以我迷失了要转换的数组的位置。我试过将$ form-> form_info ['county'] [$ i]放入其自己的变量中,并将其连接到counties变量中,但是遇到了同样的问题。
dd($ forms-> form_info ['county'] [$ i])的结果;是
"Bernalillo County"
dd($ forms-> form_info ['county'])的结果;是
array:1 [▼
0 => "Bernalillo County"
]
dd的结果(var_dump($ forms-> form_info ['county'] [$ i]));是
string(17) "Bernalillo County"
null
这是问题的直接屏幕截图
答案 0 :(得分:1)
显然,数据不是您期望的,但是此代码对于您要执行的操作非常冗长:用逗号分隔数组值,在每十个元素后放置一个换行符。我们可以使用array_chunk
轻松做到这一点。
<?php
$data = str_split("abcdefghijklmnopqrstuvwxyz");
$output = "";
foreach(array_chunk($data, 10) as $v) {
$output .= implode(", ", $v) . ",\n";
}
// get rid of that final comma space
echo substr($output, 0, -2);
输出:
a, b, c, d, e, f, g, h, i, j,
k, l, m, n, o, p, q, r, s, t,
u, v, w, x, y, z
适应您的代码:
$counties = "";
if(isset($forms->form_info['county'])){
foreach(array_chunk($forms->form_info['county'], 10) as $v) {
$counties .= implode(", ", $v) . ",\n";
}
$counties = substr($counties, 0, -2);
}
答案 1 :(得分:0)
请向miken32致谢,他的解决方案可以帮助我实现大部分目标。修复来自一个简单的if语句,该语句在foreach之前被检查。因此解决方案最终是:
{{1}}
但是该函数失败的真正原因是,我一直在使用的数据被转换为数组(爆炸),而不仅仅是爆炸,因此它实际上是多维数组。
答案 2 :(得分:-1)
如果我很了解这一点,那么您会期望从$forms->form_info['county']
中获得一个数组吗?
如果是这种情况,请使用implode
您的代码应为:
if(isset($forms->form_info['county']) && is_array($forms->form_info['county'])){
$countries = implode(",", $forms->form_info['county']);
}