PHP警告 - 非法字符串偏移

Rom*_*mes 2 php wordpress foreach loops advanced-custom-fields

所以我不明白为什么这不起作用.我正在使用Wordpress和一个名为ACF的插件来填充一些数据.我循环遍历我的转发器字段以吐出数据,如下所示:

<?php

    $links = get_field('footer_links');  // spits out the array

    if($links) {
        foreach ( $links as $link ) {
            $logo = $link['logo'];
            $link = $link['link'];
            $text = $link['text'];

            echo '<div class="link">';
            echo '  <a href="'.$link.'"><img src="'.$logo.'" /><p>'.$text.'</p></a>';
            echo '</div>';
        }
    }
    // Logo spits out a image path
    // link spits out the URL path
    // text SHOULD just spit out the title, however throws PHP warning

?>
Run Code Online (Sandbox Code Playgroud)

对于变量,$text我收到了PHP警告.

警告:非法字符串偏移'文本'在......

为什么这是我的其他变量 - $logo,$link不要抛出这个警告?它们的创建方式与其他$text变量相同.

我已经尝试重新创建整个转发器字段并更改名称等.但没有成功.

这是我的print_r($ links);

Array
(
    [0] Array
        (
            [logo] http://domainname.com/imagepath
            [link] http://.....
            [text] Text1
        )

    [1] Array
        (
            [logo] http://domainname.com/imagepath
            [link] http://.....
            [text] Text2
        )

    [2] Array
        (
            [logo] http://domainname.com/imagepath
            [link] http://.....
            [text] Text3
        )

)
Run Code Online (Sandbox Code Playgroud)

Loï*_*oïc 5

这里抛出错误:

$link['text'];
Run Code Online (Sandbox Code Playgroud)

数组$link缺乏索引['text'].这是因为你在这里覆盖数组变量:

$link = $link['link'];
Run Code Online (Sandbox Code Playgroud)

改为:

$href = $link['link'];
Run Code Online (Sandbox Code Playgroud)

你是金子.

  • @Romes +1你正在覆盖`$ link`数组变量.将`$ link = $ link ['link']`重命名为`$ href = $ link ['link']`. (3认同)