doulingzou1712 2014-01-24 19:27 采纳率: 0%
浏览 82
已采纳

非法字符串偏移php

I have been fighting this issue and actually solved it once, but still do not understand what is the issue here. I keep on running into "Illegal string offset" . Ok yes i have an array. Yes it does have keys, that I am trying to access, and values for some key are in fact strings. For some magic reason everything works in one place and does not in the other. Also, what is interesting is that when I try to var dump a part of an array everything looks fine (maybe due to lack of knowledge).

Thank You for your help in advance! Please try to explain in simple terms. I once had a guy who rewrote my code entirely . It's great, but i am trying to learn and he just gave me a peace of a cake too big for me to bite.

Here is the code *The part that echoes out the code is at the bottom of this block below.

$artists = get_artists_all();

foreach ($artists as $artists_id => $artist) {

        if (isset($_GET["id"])) {
            $artists_id = $_GET["id"];
                if(isset($artists["$artists_id"])){
                $artist = $artists[$artists_id];
            }
        }
        if (!isset($artist)){
            header("Location:".BASE_URL."artists/");
            exit();
        }

    foreach ($artist as $work) {

        if (isset($_GET["id"])) {
            $artist_id = $_GET["id"];
                if(isset($artist["$artist_id"])){
                $work = $artist[$artist_id]["id"];
                }
        }
        if (!isset($work)){
            header("Location:".BASE_URL."artist/");
            exit();

        }
    }   
          }

echo "<ul>";
foreach ($artist as $work){

    echo "<pre>";
    echo $work["name"] . "
";
    echo $work["title"];
    echo "</pre>";

}
echo '</ul>';

Here is the error I get. Notice, that despite the error it still shows the desired information

Warning: Illegal string offset 'name' in C:\xampp\htdocs\artists\artist.php on line 52

A

Warning: Illegal string offset 'title' in C:\xampp\htdocs\artists\artist.php on line 53

A Anatoly Zverev "Portrait of Vladimir Nemukhin" Anatoly Zverev "Sunset" Anatoly Zverev "Young Woman"

And last but not least part of the array I am working with.

$zverev = array(
    "name" => "Anatoly Zverev",
    $zverev[] = array(
        "name" => "Anatoly Zverev",
        "title" => '"'."Portrait of Vladimir Nemukhin".'"',
        "year" => 1982,
        "media" => "Mixed media on paper",
        "dimentions" => "H:" . 18.5 . " x W:" . 14 . "in",
        "availability" => "Sold",
        "thumb" => IMG_PATH . "anatoly_zverev".THUMB_PATH. "Thumb_Anatoly_Zverev_Portrait_Vladimir_Nemukhin.jpg",
        "lg" => IMG_PATH . "anatoly_zverev" . LG_PATH ."Lg_Anatoly_Zverev_Portrait_Vladimir_Nemukhin.jpg"
        ),
    $zverev[] = array(
        "name" => "Anatoly Zverev",
        "title" => '"'."Sunset".'"',
        "year" => 1980,
        "media" => "Mixed media on paper",
        "dimentions" => "H:" . 33.7 . " x W:" . 24 . "in",
        "availability" => $available,
        "thumb" => IMG_PATH . "anatoly_zverev".THUMB_PATH. "Thumb_Anatoly_Zverev_Sunset.jpg",
        "lg" => IMG_PATH . "anatoly_zverev" . LG_PATH ."Lg_Anatoly_Zverev_Sunset.jpg"
        ),
    $zverev[] = array(
        "name" => "Anatoly Zverev",
        "title" => '"'."Young Woman".'"',
        "year" => 1966,
        "media" => "Ink on paper",
        "dimentions" => "H:" . 16 . " x W:" . 11.2 . "in",
        "availability" => $available,
        "thumb" => IMG_PATH . "anatoly_zverev".THUMB_PATH. "Thumb_Anatoly_Zverev_Young_Woman.jpg",
        "lg" => IMG_PATH . "anatoly_zverev" . LG_PATH ."Lg_Anatoly_Zverev_Young_Woman.jpg"
        )
        ),

As per request var_dump($artist) .... Weird, but it cycles through this part of the array 3 times

array(5) {
  ["name"]=>
  string(14) "Anatoly Zverev"
  [0]=>
  array(8) {
    ["name"]=>
    string(14) "Anatoly Zverev"
    ["title"]=>
    string(31) ""Portrait of Vladimir Nemukhin""
    ["year"]=>
    int(1982)
    ["media"]=>
    string(20) "Mixed media on paper"
    ["dimentions"]=>
    string(15) "H:18.5 x W:14in"
    ["availability"]=>
    string(4) "Sold"
    ["thumb"]=>
    string(87) "/artists/anatoly_zverev/images/ldpi/Thumb_Anatoly_Zverev_Portrait_Vladimir_Nemukhin.jpg"
    ["lg"]=>
    string(84) "/artists/anatoly_zverev/images/mdpi/Lg_Anatoly_Zverev_Portrait_Vladimir_Nemukhin.jpg"
  }
  [1]=>
  array(8) {
    ["name"]=>
    string(14) "Anatoly Zverev"
    ["title"]=>
    string(8) ""Sunset""
    ["year"]=>
    int(1980)
    ["media"]=>
    string(20) "Mixed media on paper"
    ["dimentions"]=>
    string(15) "H:33.7 x W:24in"
    ["availability"]=>
    string(10) "/contact/""
    ["thumb"]=>
    string(67) "/artists/anatoly_zverev/images/ldpi/Thumb_Anatoly_Zverev_Sunset.jpg"
    ["lg"]=>
    string(64) "/artists/anatoly_zverev/images/mdpi/Lg_Anatoly_Zverev_Sunset.jpg"
  }
  [2]=>
  array(8) {
    ["name"]=>
    string(14) "Anatoly Zverev"
    ["title"]=>
    string(13) ""Young Woman""
    ["year"]=>
    int(1966)
    ["media"]=>
    string(12) "Ink on paper"
    ["dimentions"]=>
    string(15) "H:16 x W:11.2in"
    ["availability"]=>
    string(10) "/contact/""
    ["thumb"]=>
    string(72) "/artists/anatoly_zverev/images/ldpi/Thumb_Anatoly_Zverev_Young_Woman.jpg"
    ["lg"]=>
    string(69) "/artists/anatoly_zverev/images/mdpi/Lg_Anatoly_Zverev_Young_Woman.jpg"
  }
  ["id"]=>
  int(46)
}
array(5) {
  ["name"]=>
  string(14) "Anatoly Zverev"
  [0]=>
  array(8) {
    ["name"]=>
    string(14) "Anatoly Zverev"
    ["title"]=>
    string(31) ""Portrait of Vladimir Nemukhin""
    ["year"]=>
    int(1982)
    ["media"]=>
    string(20) "Mixed media on paper"
    ["dimentions"]=>
    string(15) "H:18.5 x W:14in"
    ["availability"]=>
    string(4) "Sold"
    ["thumb"]=>
    string(87) "/artists/anatoly_zverev/images/ldpi/Thumb_Anatoly_Zverev_Portrait_Vladimir_Nemukhin.jpg"
    ["lg"]=>
    string(84) "/artists/anatoly_zverev/images/mdpi/Lg_Anatoly_Zverev_Portrait_Vladimir_Nemukhin.jpg"
  }
  [1]=>
  array(8) {
    ["name"]=>
    string(14) "Anatoly Zverev"
    ["title"]=>
    string(8) ""Sunset""
    ["year"]=>
    int(1980)
    ["media"]=>
    string(20) "Mixed media on paper"
    ["dimentions"]=>
    string(15) "H:33.7 x W:24in"
    ["availability"]=>
    string(10) "/contact/""
    ["thumb"]=>
    string(67) "/artists/anatoly_zverev/images/ldpi/Thumb_Anatoly_Zverev_Sunset.jpg"
    ["lg"]=>
    string(64) "/artists/anatoly_zverev/images/mdpi/Lg_Anatoly_Zverev_Sunset.jpg"
  }
  [2]=>
  array(8) {
    ["name"]=>
    string(14) "Anatoly Zverev"
    ["title"]=>
    string(13) ""Young Woman""
    ["year"]=>
    int(1966)
    ["media"]=>
    string(12) "Ink on paper"
    ["dimentions"]=>
    string(15) "H:16 x W:11.2in"
    ["availability"]=>
    string(10) "/contact/""
    ["thumb"]=>
    string(72) "/artists/anatoly_zverev/images/ldpi/Thumb_Anatoly_Zverev_Young_Woman.jpg"
    ["lg"]=>
    string(69) "/artists/anatoly_zverev/images/mdpi/Lg_Anatoly_Zverev_Young_Woman.jpg"
  }
  ["id"]=>
  int(46)
}
array(5) {
  ["name"]=>
  string(14) "Anatoly Zverev"
  [0]=>
  array(8) {
    ["name"]=>
    string(14) "Anatoly Zverev"
    ["title"]=>
    string(31) ""Portrait of Vladimir Nemukhin""
    ["year"]=>
    int(1982)
    ["media"]=>
    string(20) "Mixed media on paper"
    ["dimentions"]=>
    string(15) "H:18.5 x W:14in"
    ["availability"]=>
    string(4) "Sold"
    ["thumb"]=>
    string(87) "/artists/anatoly_zverev/images/ldpi/Thumb_Anatoly_Zverev_Portrait_Vladimir_Nemukhin.jpg"
    ["lg"]=>
    string(84) "/artists/anatoly_zverev/images/mdpi/Lg_Anatoly_Zverev_Portrait_Vladimir_Nemukhin.jpg"
  }
  [1]=>
  array(8) {
    ["name"]=>
    string(14) "Anatoly Zverev"
    ["title"]=>
    string(8) ""Sunset""
    ["year"]=>
    int(1980)
    ["media"]=>
    string(20) "Mixed media on paper"
    ["dimentions"]=>
    string(15) "H:33.7 x W:24in"
    ["availability"]=>
    string(10) "/contact/""
    ["thumb"]=>
    string(67) "/artists/anatoly_zverev/images/ldpi/Thumb_Anatoly_Zverev_Sunset.jpg"
    ["lg"]=>
    string(64) "/artists/anatoly_zverev/images/mdpi/Lg_Anatoly_Zverev_Sunset.jpg"
  }
  [2]=>
  array(8) {
    ["name"]=>
    string(14) "Anatoly Zverev"
    ["title"]=>
    string(13) ""Young Woman""
    ["year"]=>
    int(1966)
    ["media"]=>
    string(12) "Ink on paper"
    ["dimentions"]=>
    string(15) "H:16 x W:11.2in"
    ["availability"]=>
    string(10) "/contact/""
    ["thumb"]=>
    string(72) "/artists/anatoly_zverev/images/ldpi/Thumb_Anatoly_Zverev_Young_Woman.jpg"
    ["lg"]=>
    string(69) "/artists/anatoly_zverev/images/mdpi/Lg_Anatoly_Zverev_Young_Woman.jpg"
  }
  ["id"]=>
  int(46)
}
array(5) {
  ["name"]=>
  string(14) "Anatoly Zverev"
  [0]=>
  array(8) {
    ["name"]=>
    string(14) "Anatoly Zverev"
    ["title"]=>
    string(31) ""Portrait of Vladimir Nemukhin""
    ["year"]=>
    int(1982)
    ["media"]=>
    string(20) "Mixed media on paper"
    ["dimentions"]=>
    string(15) "H:18.5 x W:14in"
    ["availability"]=>
    string(4) "Sold"
    ["thumb"]=>
    string(87) "/artists/anatoly_zverev/images/ldpi/Thumb_Anatoly_Zverev_Portrait_Vladimir_Nemukhin.jpg"
    ["lg"]=>
    string(84) "/artists/anatoly_zverev/images/mdpi/Lg_Anatoly_Zverev_Portrait_Vladimir_Nemukhin.jpg"
  }
  [1]=>
  array(8) {
    ["name"]=>
    string(14) "Anatoly Zverev"
    ["title"]=>
    string(8) ""Sunset""
    ["year"]=>
    int(1980)
    ["media"]=>
    string(20) "Mixed media on paper"
    ["dimentions"]=>
    string(15) "H:33.7 x W:24in"
    ["availability"]=>
    string(10) "/contact/""
    ["thumb"]=>
    string(67) "/artists/anatoly_zverev/images/ldpi/Thumb_Anatoly_Zverev_Sunset.jpg"
    ["lg"]=>
    string(64) "/artists/anatoly_zverev/images/mdpi/Lg_Anatoly_Zverev_Sunset.jpg"
  }
  [2]=>
  array(8) {
    ["name"]=>
    string(14) "Anatoly Zverev"
    ["title"]=>
    string(13) ""Young Woman""
    ["year"]=>
    int(1966)
    ["media"]=>
    string(12) "Ink on paper"
    ["dimentions"]=>
    string(15) "H:16 x W:11.2in"
    ["availability"]=>
    string(10) "/contact/""
    ["thumb"]=>
    string(72) "/artists/anatoly_zverev/images/ldpi/Thumb_Anatoly_Zverev_Young_Woman.jpg"
    ["lg"]=>
    string(69) "/artists/anatoly_zverev/images/mdpi/Lg_Anatoly_Zverev_Young_Woman.jpg"
  }
  ["id"]=>
  int(46)
}
array(5) {
  ["name"]=>
  string(14) "Anatoly Zverev"
  [0]=>
  array(8) {
    ["name"]=>
    string(14) "Anatoly Zverev"
    ["title"]=>
    string(31) ""Portrait of Vladimir Nemukhin""
    ["year"]=>
    int(1982)
    ["media"]=>
    string(20) "Mixed media on paper"
    ["dimentions"]=>
    string(15) "H:18.5 x W:14in"
    ["availability"]=>
    string(4) "Sold"
    ["thumb"]=>
    string(87) "/artists/anatoly_zverev/images/ldpi/Thumb_Anatoly_Zverev_Portrait_Vladimir_Nemukhin.jpg"
    ["lg"]=>
    string(84) "/artists/anatoly_zverev/images/mdpi/Lg_Anatoly_Zverev_Portrait_Vladimir_Nemukhin.jpg"
  }
  [1]=>
  array(8) {
    ["name"]=>
    string(14) "Anatoly Zverev"
    ["title"]=>
    string(8) ""Sunset""
    ["year"]=>
    int(1980)
    ["media"]=>
    string(20) "Mixed media on paper"
    ["dimentions"]=>
    string(15) "H:33.7 x W:24in"
    ["availability"]=>
    string(10) "/contact/""
    ["thumb"]=>
    string(67) "/artists/anatoly_zverev/images/ldpi/Thumb_Anatoly_Zverev_Sunset.jpg"
    ["lg"]=>
    string(64) "/artists/anatoly_zverev/images/mdpi/Lg_Anatoly_Zverev_Sunset.jpg"
  }
  [2]=>
  array(8) {
    ["name"]=>
    string(14) "Anatoly Zverev"
    ["title"]=>
    string(13) ""Young Woman""
    ["year"]=>
    int(1966)
    ["media"]=>
    string(12) "Ink on paper"
    ["dimentions"]=>
    string(15) "H:16 x W:11.2in"
    ["availability"]=>
    string(10) "/contact/""
    ["thumb"]=>
    string(72) "/artists/anatoly_zverev/images/ldpi/Thumb_Anatoly_Zverev_Young_Woman.jpg"
    ["lg"]=>
    string(69) "/artists/anatoly_zverev/images/mdpi/Lg_Anatoly_Zverev_Young_Woman.jpg"
  }
  ["id"]=>
  int(46)
}
  • 写回答

1条回答 默认 最新

  • dongti7838 2014-01-24 19:37
    关注

    In your first foreach loop;

    foreach ($artist as $work) {
    
        if (isset($_GET["id"])) {
            $artist_id = $_GET["id"];
                if(isset($artist["$artist_id"])){
                $work = $artist[$artist_id]["id"];
                }
        }
        if (!isset($work)){
            header("Location:".BASE_URL."artist/");
            exit();
    
        }
    

    You have said that "For each of the $artist variable, use the variable $work", but within that loop, you are still referencing as $artist and not $work.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 基于Simulink的ZPW2000轨道电路仿真
  • ¥15 pycharm找不到在环境装好的opencv-python
  • ¥15 在不同的执行界面调用同一个页面
  • ¥20 基于51单片机的数字频率计
  • ¥50 M3T长焦相机如何标定以及正射影像拼接问题
  • ¥15 keepalived的虚拟VIP地址 ping -s 发包测试,只能通过1472字节以下的数据包(相关搜索:静态路由)
  • ¥20 关于#stm32#的问题:STM32串口发送问题,偶校验(even),发送5A 41 FB 20.烧录程序后发现串口助手读到的是5A 41 7B A0
  • ¥15 Mabatis查询数据
  • ¥15 想知道lingo目标函数中求和公式上标是变量情况如何求解
  • ¥15 关于E22-400T22S的LORA模块的通信问题