【问题标题】:Notice: Array to string conversion in PDO注意:PDO 中的数组到字符串的转换
【发布时间】:2016-12-20 03:01:00
【问题描述】:

我遇到了这个似乎无法解决的错误。

这里是代码

$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、用户名和电话?

【问题讨论】:

  • 导致通知的代码在哪里?您最好展示您的代码尝试,以便我们可以帮助您找到错误,而不是仅仅期望有人为您编写代码,而您永远不会学习如何正确调试自己的代码。
  • 这就是那里的代码。除了我不明白你所说的代码尝试是什么意思
  • 您在此处显示的代码没有foreach($var ...。您只显示var_dump($var),并且由于$var = $this->stmt->fetchAll(); 也不会创建Notice,因此您没有显示foreach($var ... 代码尝试。
  • 感谢您指出这一点。我已经添加了
  • 你应该接受下面给出的答案,否则其他人会认为它没有解决,可能会发布更多答案,这就是 Stack 的工作原理

标签: php mysql arrays pdo


【解决方案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']

【讨论】:

  • 非常感谢。它起作用了,但它只获得了第一个循环的值。在我的示例中,数组值为 2,但这里只显示一个结果。
  • 不客气。我很高兴能帮上忙。由于您还是新手,我可以指出,在这里说“谢谢”的首选方式是投票赞成好的问题和有用的答案(一旦您有足够的声誉这样做),并接受最有用的答案回答您提出的任何问题(这也可以稍微提升您的声誉)。 When someone answers
猜你喜欢
  • 1970-01-01
  • 2023-03-06
  • 2013-11-03
  • 2017-08-11
  • 2013-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多