2016-12-20 34 views
-1

我有这个错误,我似乎无法解决。注意:数组到字符串转换在PDO

下面是代码

$this->stmt = $this->handle->prepare("SELECT * FROM tb_ph WHERE totalprofit = 0 AND status = '1' AND checks = ''"); 

$var = $this->stmt->fetchAll(); 

$var返回,我很乐意遍历,以获得各自的ID和用户名一多维数组。 现在的问题是,如果我

foreach($var as $key => $value){ 
    $id = $value['id']; 
    $username = $value['username']; 
    $phone = $value['phone']; 
} 

我得到通知:数组字符串转换错误。

var_dump($var)

Array 
(
    [0] => Array 
     (
      [id] => 3 
      [0] => 3 
      [username] => rose 
      [1] => rose 
      [phone] => +2782345578952 
      [2] => +2782345578952 
     ) 

    [1] => Array 
     (
      [id] => 4 
      [0] => 4 
      [username] => josh 
      [1] => rose 
      [phone] => +0182345578952 
      [2] => +0182345578952 
     ) 

) 

如何使循环得到的只是ID,用户名和电话返回两个结果每一次?

+1

您的代码在哪里导致通知?你最好展示你的代码尝试,这样我们可以帮助你找到你的错误,而不仅仅是期望有人为你编写代码,而且你永远不会学习如何正确地调试你自己的代码。 – Sean

+0

那就是那里的代码。除非我不明白你的意思是代码尝试 – ebuka

+0

这里显示的代码没有'foreach($ var ...'。你只显示一个'var_dump($ var)',并且自$ var = $ this-> stmt-> fetchAll();'也不会创建'Notice',那么你不会显示你的foreach($ var ...'代码尝试 – Sean

回答

1

看看这个位非常密切:

Array 
(
    [0] => Array 
     (

它表明你,你有什么阵,因此在你的foreach得到什么的数组另一个数组

foreach($var as $arr) { 
    /* here $arr is an array in calling print on it will produce the warning you have already seen but ...*/ 
    print $arr[$id]; 

} 

因为你是印刷这里只是一个数组的一个元素。同样打印$ arr ['username']

+0

非常感谢。它的工作,但它只是第一个循环的值。就像在我的例子中那样,数组的值是2,但是在这里只显示了一个结果。 – ebuka

+1

非常欢迎。我很高兴得到了帮助。既然你在这里还是新手,我是否可以指出在这里说'感谢'的首选方式是通过提高投票的好问题和有用的答案(一旦你有足够的声望这样做),并接受最有帮助的答案到任何问题你问(这也给你一个小小的提升你的声誉)。 [当某人回答](http://stackoverflow.com/help/someone-answers) – e4c5

相关问题