我使用的是平面文件db,而不是mysql所以我不能使用$ limit
我需要将记录数量限制为1,如果超过1,则回复其他内容:
$result = $db->getall(lmonth);
foreach($result as $item)
show_record($item);
}
函数getall()
/*!
* @function getall
* @abstract retrieves all records in the database, each record in an array
* element.
* @param orderby order the results. Set to the field name to order by
* (as a string). If left unset, sorting is not done and it is a lot faster.
* If prefixed by "!", results will be ordered in reverse order.
* If orderby is an array, the 1st element refers to the field to order by,
* and the 2nd, a function that will take two take two parameters A and B
* - two fields from two records - used to do the ordering. It is expected
* that the function would return -ve if A < B and +ve if A > B, or zero
* if A == B (to order in ascending order).
* @param includeindex if true, an extra field called 'FFDB_IFIELD' will
* be added to each record returned. It will contain an int that specifies
* the original position in the database (zero based) that the record is
* positioned. It might be useful when an orderby is used, and an future
* operation on a record is required, given it's index in the table.
* @result all database records as an array
*/
function getall($orderby = NULL, $includeindex = false)
{
if (!$this->isopen)
{
user_error("Database not open.", E_USER_ERROR);
return false;
}
// If there are no records, return
if ($this->records == 0)
return array();
if (!$this->lock_read())
return false;
// Read the index
$index = $this->read_index();
// Read each record and add it to an array
$rcount = 0;
foreach($index as $offset)
{
// Read the record
list($record, $rsize) = $this->read_record($this->data_fp, $offset);
// Add the index field if required
if ($includeindex)
$record[FFDB_IFIELD] = $rcount++;
// Add it to the result
$result[] = $record;
}
$this->unlock();
// Re-order as required
if ($orderby !== NULL)
return $this->order_by($result, $orderby);
else
return $result;
}
功能show_record()
function show_record($record){
$month = $record["lmonth"];
$status = $record["lstatus"];
$year = $record["lyear"];
}
if (($status == ON) && ($month >= $current_month) && ($year >= $current_year)){
echo "foo";
}
我尝试使用break
,但它返回0(零)记录。
我尝试使用$i = 0
...但它返回全部或全部
有什么想法吗? 感谢
答案 0 :(得分:0)
这样的事情怎么样?
function getall($orderby = null, $includeindex = false, $limit = null) {
...
if ($orderby !== null) {
$result = $this->order_by($result, $orderby);
}
if ($limit) {
return array_slice($result, 0, $limit);
}
return $result;
}
答案 1 :(得分:0)
解
Print_r做了这个伎俩,我正在使用echo:
print_r (show_record($row));
以下是最终代码对我的影响:
$result = $db->getall(lp_month,lp_year);
$i = 0;
foreach ($result as $row){
print_r (show_record($row));
if ($i >= 1)
break;
$i++;
}
现在期待解决其他小问题,谢谢