Php 为foreach()提供的错误带_标记()和无效参数

Php 为foreach()提供的错误带_标记()和无效参数,php,Php,在我的代码中,booklist是一种自定义的post类型,booklink作为自定义字段。此图书列表是自定义post类型图书的postobject 我一直在犯这个错误 strip_tags()希望参数1是第11行的字符串 为第12行的foreach()提供的参数无效 此处将$booklist视为字符串(返回字符串) 然后作为一个数组 foreach ($booklist as $post) : 你不能那样做foreach需要一个数组 您需要做的是(假设get\u field返回一个数组,因为它

在我的代码中,booklist是一种自定义的post类型,booklink作为自定义字段。此图书列表是自定义post类型图书的postobject

我一直在犯这个错误

strip_tags()希望参数1是第11行的字符串

为第12行的foreach()提供的参数无效


此处将
$booklist
视为字符串(返回字符串)

然后作为一个数组

foreach ($booklist as $post) :
你不能那样做
foreach
需要一个数组

您需要做的是(假设
get\u field
返回一个数组,因为它显然没有返回字符串),在数组中循环并在那里运行函数

$booklist = get_field('booklist');
foreach ($booklist as $post) :
    $post = strip_tags($post);

我添加了
endforeach
并删除了
get\u字段的带标签代码,解决了这个问题。

那么问题出在哪里?很明显,
get\u field('booklist')
生成一个对象,
strip\u tags
需要一个字符串,
strip\u tags
返回一个字符串,或者在出现错误时
FALSE
,但是
foreach
需要一个数组。这不是真的,可以使用foreach()在一个字符串上,每次迭代都会得到一个字符。这里的问题是传递给
strip_tags
get_field(“…”)
)的参数在本例中返回类似null(可能未定义?)的其他值。您只需使用检查
get\u字段的返回值即可!是字符串(),你可能想把它拆分成一个数组(
explode(',',,get_field('bookmarks'))
),你有一个数组要迭代(我猜这个字段有一个来自wordpress后端的文本值)@Torben,而你确实可以将字符串作为数组逐个字符地解析,我严重怀疑这是这里的用例(这种用法很少见)。该函数可以返回null,但是为什么要
foreach
它呢?不管怎样,我们都不知道
get\u result
实际做了什么。OP应该给我们一些启发
foreach ($booklist as $post) :
$booklist = get_field('booklist');
foreach ($booklist as $post) :
    $post = strip_tags($post);