我无法在foreach中显示有关php数组的所有结果。
我编写了sql查询,我希望它循环遍历所有返回值的结果。
问题是我不知道我在做什么错,因为响应只返回第一个数组值(巧克力)的结果,而不是全部三个结果。
$cookies = array();
$cookies[] = 'Chocolate';
$cookies[] = 'Vanilla';
$cookies[] = 'Stracciatella';
$ar = [];
foreach ($cookies as $cookie => $value) {
$results = $this->getEntityManager()->getConnection()->executeQuery(
"SELECT * FROM sweets WHERE cookies LIKE :cookies",
['cookies' => '%"' . $value . '"%']
);
}
foreach ($results as $result) {
$ar[] = $result;
}
return $ar;
我做了这个标签,因为问题不是查询,而是foreach循环。
答案 0 :(得分:0)
您当前正在第一个$results
循环的每次迭代中重写foreach
变量。您需要将结果附加到另一个变量,然后进行迭代,或者减少到一个foreach
循环。
$cookies = array();
$cookies[] = 'Chocolate';
$cookies[] = 'Vanilla';
$cookies[] = 'Stracciatella';
$results = [];
foreach ($cookies as $cookie => $value) {
$results[] = $this->getEntityManager()->getConnection()->executeQuery(
"SELECT * FROM sweets WHERE cookies LIKE :cookies",
['cookies' => '%"' . $value . '"%']
);
}
return $results;
为避免更新此内容并无法满足您的需求,我将在此处提供一些其他工作流,您可以选择这些工作流,并根据自己的喜好进行调整。我不确定您使用的是什么CMS,因此我假设它在此处返回PDOStatement
,因此我可以调用fetch()
要获取与$value
匹配的Cookie的数量
$cookies = ['Chocolate', 'Vanilla', 'Stracciatella'];
$counts = array_fill_keys($cookies, 0);
foreach ($cookies as $cookie => $value) {
$counts[$cookie] = $this->getEntityManager()->getConnection()->executeQuery(
"SELECT COUNT(*) FROM sweets WHERE cookies LIKE :cookies",
['cookies' => '%"' . $value . '"%']
)->fetch();
}
要获取Cookie数据并计算结果:
$cookies = ['Chocolate', 'Vanilla', 'Stracciatella'];
$sweets = []; // previously $results
$counts = array_fill_keys($cookies, 0);
foreach ($cookies as $cookie => $value) {
$sweet = $this->getEntityManager()->getConnection()->executeQuery(
"SELECT * FROM sweets WHERE cookies LIKE :cookies",
['cookies' => '%"' . $value . '"%']
);
$sweets[] = $sweet;
$counts[$cookie] += 1;
}
// This gives you:
print_r($sweets); // the data
print_r($counts); // the counts