我有一些关于
foreach array
的问题。
如果我有一些数据:
"'a1','a2'","'b1','b2'","'c1','c2'"
我厌倦了获取a1,b1,c1
。
当我测试下面的代码时,
$aa = array("'a1','a2'","'b1','b2'","'c1','c2'");
foreach($aa as $bb){
$cc = array($bb);//var_dump($cc); (1) { [0]=> string(9) "'a1','a2'" }...
foreach($cc as $dd){
echo $dd.'<br />';
break;
}
}
它将输出:
'a1','a2'
'b1','b2'
'c1','c2'
错了
$cc = array($bb)
...有什么问题吗?谢谢。
您有一层数组,而不是两层。元素只是 php 的字符串,而不是数组。这就是为什么你的代码不起作用。
将
$cc = array($bb)
字符串替换为如下所示:
$cc = explode(',', $bb);
foreach($cc as $dd){
echo trim($dd, "'").'<br />';
break;
}
迭代单引号包裹的 csv 字符串,并在解析后返回每个字符串的第一个值。
代码:(演示)
$aa = [
"'a1','a2'",
"'b1','b2'",
"'c1','c2'"
];
var_export(
array_map(
fn($csv) => str_getcsv($csv, ',', "'")[0],
$aa
)
);
如果您需要单独的分隔字符串,只需在上面的结果数组上调用
implode()
。