【问题标题】:PHP array loop - unable to access elementsPHP数组循环 - 无法访问元素
【发布时间】:2021-05-13 14:30:08
【问题描述】:

我有一个数组。 它来自这个查询:

$table_array=array();
$table_array = $mydb->get_results($mydb->prepare("SELECT sid, stitle FROM tablename")); 

我成功检索数据。控制台显示通过 ajax(成功函数)返回的 json_encode:

function align_surveys(){
        jQuery.ajax({
        type: 'POST',
        url: MyAjax.ajaxurl,
        data: {"action": "align_sids"},
        success:
            function(data){
                console.log('data: '+ data)
                }             
        }); 
}

"data:":[{"sid":"525331","stitle":"First Title"},{"sid":"367775","stitle":"Second Title"}]

但是,当我运行 foreach 循环时,我在尝试访问它的元素时收到 500 错误。

这个错误:

foreach($table_array as $row){
  $s_ids[] = $row[0];
}

而且,这个错误:

foreach($table_array as $row){
  $s_ids[] = $row['sid'];
}

gettype 告诉我这实际上是一个数组。但是,每当我引用数组元素时,我都会出错。我无法解决它。这与方括号内的额外花括号有关吗?任何人,请指出我正确的方向。已经好几个小时了......

更新: print_r 给我看这个:

Array ( [0] => Array ( [surveyls_survey_id] => 525331 [0] => 525331 [surveyls_title] => New Survey [1] => New Survey ) [1] => Array ( [surveyls_survey_id] => 367775 [0] => 367775 [surveyls_title] => Second Survey [1] => Second Survey ) )

这在我看来就像是一个数组数组,其中键实际上是值...不知道我得到的结果如何或为什么。

【问题讨论】:

    标签: php arrays for-loop curly-braces


    【解决方案1】:

    开头的“数据”看起来像是另一个对象的一部分。试试table_array['data'] 看看是否适合你。如果没有,能否把json_encode输出的整个json对象贴出来。

    【讨论】:

    • 那个“data:”只是console.log语句的一部分——帮助我把事情搞清楚。
    【解决方案2】:

    我解决了。 我必须对数组进行 json_encode,以便有效地解析它。 感谢您的贡献。

    【讨论】:

      【解决方案3】:

      您可能遇到此问题的原因有几个。

      第一个似乎已解决,您已将类型显式设置为 array(); 第二个是使用 JSON_DECODE 命令。如果对该函数使用布尔值 true/false,它可以返回一个数组或一个对象。

      $mayarray = json_decode($jsonobject,true);

      这会将 JSON 数据加载到关联数组中。如果您使用 false 或将其留空,取决于您的 PHP 配置,它将作为对象返回,这意味着如果您尝试将其作为数组访问,您将收到 500 错误。

      【讨论】:

        猜你喜欢
        • 2019-08-11
        • 2020-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-15
        • 2016-06-09
        • 2016-08-08
        • 2020-05-03
        相关资源
        最近更新 更多