我制作了一个杂货店系统,考虑到你投入的收件人数量。 基于此,它结合了价值并为您输出杂货店。
我循环mysql查询并创建如下数组:
foreach sql loop{
$ingredients = array(
"id"=>array($id),
"name"=>array($name),
"amount"=>array($amount),
"unit"=>array($unit)
);
foreach ($ingredienser as $key => $value) {
foreach ($value as $index => $v) {
echo $key."=";
echo $v;
echo "<br><hr>";
}
}
}
如果我扔掉1份食谱,整个考验会输出一个这样的列表:
id=150
name=Cherrytomater
amount=300
unit=Gram
id=151
name=Kyllingfilet
amount=4
unit=Stykk
如果我扔2个收件人,它会抛出下一个食谱。
然而,我需要它做一些事情。
进一步解释;我试图实现的sql相当于:
$dupe = "2" //amount of similar recipies
SELECT i.id, i.ingred, r.enhet, r.id, SUM(r.mengde * $dupe) total, r.enhet FROM oppskriftingred r left join ingrediens i on i.id = r.ingrediens WHERE r.oppskriftid IN $vars2 GROUP BY i.ingred, r.enhet ORDER BY i.ingred
然而,sql方法不会起作用,因为SUM不区分不同的收件人..如果$ dupe对于一个食谱是4而对另一个是2,对于两者都是4。
那么我怎样才能在php中使用数组呢?非常感谢任何帮助!
答案 0 :(得分:0)
你的“这就是我需要的清单”有一个问题点: 1.如果名称是SIMILAR,则合并值
其余的很简单。你有一系列的ingerdients $成分。您需要遍历此操作并将每个条目与结果数组进行比较,以确定您的点2和1是否与现有条目或新条目匹配。我会给新数组一个键,使匹配变得容易。我们将单位和名称称为字符串:'Gram-Cherrytomater'
$result = array();
foreach ($ingerdients as $item) {
$newKey = $item['unit'].'-'.$item['name'];
if (isset($result[$newKey]) {
// add amount to existing item
$result[$newKey]['amount'] += $item['amount'];
} else {
// add new item
$result[$newKey] = $item;
}
}
// now loop trough the result and display whatever you want
问题在于SIMILAR的问题。我不知道,你想如何比较相似的字符串。你应该在获得$ newKey时这样做。使用$ item ['name']执行某些操作以使其“相似”。
你可以使用一些php函数,比如similar_text(),levenshtein()或soundex()。我不知道这对你的语言有多好(丹麦人?)。