I'm trying to use 'yield' in my algorithm and my PHP version is 5.4.
I'm looking for any guidance on using 'yield'.
this an FP-algorithim it works fine with php 5.5 but the rest of the project use php 5.4
public function find_frequent_itemsets($transactions, $minimum_support){
$processedTransactions = array();
$items = array();
//var_dump($transactions);
foreach($transactions as $transaction){
// if(!is_array($transaction))
//continue;
$processed = array();
foreach($transaction as $item){
// check if this item exists ?
if(array_key_exists($item, $items)){
$items[$item] += 1;
}else{
// not found
$items[$item] = 1;
}
array_push($processed, $item);
}// every transaction.
array_push($processedTransactions, $processed);
}// end first for each (transaction).
// Remove infrequent items from the item support dictionary.
foreach(array_keys($items) as $index){
if($items[$index] < $minimum_support){
unset($items[$index]);
}
}// end loop
//var_dump($items);
// sort Transaction in $processedTransactions.
$sortedTransactions = array();
//var_dump($processedTransactions);
foreach($processedTransactions as $currentTransactions){
$tmp = array();
foreach($currentTransactions as $item){
if(array_key_exists($item, $items)){
// key exits = frequent item.
//array_push($tmp, array($item, $items[$item]));
$tmp[$item] = $items[$item];
}
}
// sort based on most frequent item.
arsort($tmp);
//var_dump($tmp);
array_push($sortedTransactions, array_keys($tmp));
}
$tree = new FPTree();
// Add all Transactions.
foreach($sortedTransactions as $currentTransactions){
$tree->add($currentTransactions);
}foreach(find_with_suffix($tree, array(), $minimum_support) as $itemset){
yield $itemset;
}
}}
function find_with_suffix($tree, $suffix, $minimum_support){
foreach($tree->getItems() as $element){
$item = $element[0];
$nodes = $element[1];
$support = 0;
foreach($nodes as $n){
$support += $n->getCount();
}
if($support >= $minimum_support && !array_key_exists($item, $suffix)){
$found_set = array_merge(array($item), $suffix);
$wanted=array();
$foo= implode(", ", $found_set) ;
$wanted[$foo]=$support;
yield $wanted; $condTree=conditional_tree_from_paths($tree->prefixPaths($item),$minimum_support);
foreach(find_with_suffix($condTree, $found_set, $minimum_support) as s){
yield $s;
}
}
}