我正在建立预订系统,我正在编程递归的功能。因此,我需要在PHP中使用php函数next()和current()。问题是,如果我有所有记录的数组,它只是不起作用。它适用于其他所有数组,所以我的猜测是内部指针没有设置,但是reset()函数也没有帮助。
问题是当我在laravel中调用eloquent模型以从表中获取所有结果时:
$posts = Post::all();
然后我回复或返回(无关紧要)当前($ posts),我得到相同的结果,好像我返回$ posts(整个数组)
当我试着这样说时:
next($posts);
return current($posts);
或者:
prev($posts);
return current($posts);
我有一个错误:
The Response content must be a string or object implementing __toString(), "boolean" given.
任何人都可以帮我解决这个问题吗?如果我创建相同的数组并返回它雄辩的数组,这个新创建的数组是相同的,但如果我在雄辩的数据上使用current,它就不起作用。 谢谢你的帮助。
答案 0 :(得分:2)
$posts = Post::all(); // returns a collection
你想要
$posts = Post::all()->toArray();
然后,您可以致电current($posts)
或next($posts)
或prev($posts)
或end($posts)
。
但是,由于您有一个集合,您可以始终使用laravel的集合方法,例如first
,last
,each
,filter
,map
,{ {1}}等等。
https://laravel.com/docs/5.4/eloquent-collections#available-methods
答案 1 :(得分:0)
我使用以下代码:
$models = User::whereIn('name',$names)->get()->getIterator();
while ( $record = $models->current() )
{
...
$models->next();
}
答案 2 :(得分:-1)
要检索第一行:import pandas as pd
## columns widths of the fixed width format
fwidths = [12, 8, 8, 12, 4, 8, 8, 5]
## read fixed width format into pandas data frame
df = pd.read_fwf("your_file.txt", widths=fwidths, header=1,
names=["GSENumber", "Species", "Platform", "Sample",
"Age", "Tissue", "Sex", "Count"])
## drop "Sample" column as it is not needed in the output
df = df.drop("Sample", axis=1)
## group by GSENumber
grouped = df.groupby(df.GSENumber)
## aggregate columns for each group
aggregated = grouped.agg({'Species': lambda x: list(x.unique()),
'Platform': lambda x: list(x.unique()),
'Age': lambda x: "%d-%d" % (min(x), max(x)),
'Tissue': lambda x: list(x.unique()),
'Sex': lambda x: "Mixed" if x.nunique() > 1 else list(x.unique()),
'Count': lambda x: list(x.unique())})
print aggregated
将集合转换为数组:Post::first()
Post::all()->toArray()