【问题标题】:Illegal string offset in array数组中的非法字符串偏移
【发布时间】:2013-07-15 16:43:55
【问题描述】:

我使用一个库将本地 WebSQL DB 同步到服务器,特别是 https://github.com/orbitaloop/WebSqlSync。 我使用 PHP:5.4.7, 当我尝试如下获取数组值时,我得到消息

非法字符串偏移'clientes'

$obj 变量是:

 Array
(
    [info] => 
    [data] => Array
        (
            [clientes] => Array
                (
                )
            [conceptos_gastos] => Array
                (
                )
        [formaspago] => Array
            (
                [0] => Array
                    (
                        [idFormaPago] => 10
                        [FormaPago] => qwerqwe
                        [Dias] => 1
                        [Cuotas] => 1
                        [last_sync_date] => 
                    )
            )
        [listaprecios] => Array
            (
            )
        [producto] => Array
            (
            )
        [repartidores] => Array
            (
            )

        [tipodocumento] => Array
            (
            )

        [vehiculos] => Array
            (
            )
        [zonas] => Array
            (
            )
    )    
)

这是循环

foreach ($obj as $row => $value) {
echo $row["clientes"]["fomaspago"]["FormaPago"];
}

永远感谢任何帮助

【问题讨论】:

  • 似乎data 应该是您数组中的第一个维度。
  • 在 foreach 循环中使用 $obj["data"] 而不是 $obj

标签: php arrays


【解决方案1】:

好像是

$row["data"]["clientes"] // which is an empty array 

$row["data"]["formaspago"][0]["FormaPago"] // which should output "qwerqwe"

【讨论】:

  • 我尝试了以下方法: foreach ($obj as $row => $value) { $row["clientes"]["fomaspago"][0]["FormaPago"]; } 并且仍然是相同的错误消息 $row["data"]["formaspago"][0]["FormaPago"]
【解决方案2】:

元素 $row["clientes"]["fomaspago"]["FormaPago"];确实不存在 - 查看输出:第一行“info”没有该索引,第二行“data”有“clientes”和“fomasgapo”,但没有“clientes”“fomasgapo”。 您需要以不同的方式构建数据或以不同的方式循环数据...

【讨论】:

  • 我试过 $row["data"]["formaspago"][0]["FormaPago"] 仍然是同样的错误,还有 $row["data"]["formaspago"][ "FormaPago"]
  • 是的,因为这些元素不存在!顺便说一句,您可以通过事先检查 if (isset($row...index...)) 来避免错误...
【解决方案3】:

感谢所有,但唯一可行的方法如下:

foreach($obj->data->formaspago as $formaspago) {
  print " id ".$formaspago->idFormaPago; 
  print " Formapago ".$formaspago->FormaPago; 
  print " dias ".$formaspago->Dias;
  print " cuotas ".$formaspago->Cuotas; 
  print " lastsyncdate ".$formaspago->last_sync_date; 
}
foreach($obj->data->clientes as $formaspago) {
  print " id ".$formaspago->IdCliente;
  print " Cliente ".$formaspago->Cliente; 

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 2020-11-29
    相关资源
    最近更新 更多