首页 > 解决方案 > 在 PHP 中推送多维数组中的元素

问题描述

所以我正在使用多维数组。

例如,我试图获取的输出数据是这样的:

[[element 1],[element 2], [element 3]]

这是我的 PHP 代码(减去绑定上方的整个准备好的语句((不包括在内,因为它工作正常)):

$insertquery->bind_result($tracking_type, $tracking_change_date, $vessel_fcm_new, $vessel_fcm_old, $vessel_hull_id_new, $vessel_hull_id_old, $vessel_name_new, $vessel_name_old, $vessel_length_new, $vessel_length_old, $vessel_manufacturer_new, $vessel_manufacturer_old, $vessel_manufacturer_id_new, $vessel_manufacturer_id_old, $vessel_year_new, $vessel_year_old, $vessel_value_new, $vessel_value_old, $owner_id_new, $owner_id_old, $loss_payee_id_new, $loss_payee_id_old, $policy_id_new, $policy_id_old, $policy_start_date_new, $policy_start_date_old, $policy_end_date_new, $policy_end_date_old, $vessel_fcm, $vessel_hull_id, $vessel_name, $vessel_manufacturer_id);
while ($insertquery->fetch()){
    if($vessel_fcm_new != $vessel_fcm_old){
        $data = array($vessel_fcm_new, $vessel_fcm_old);
    }
    if ($vessel_name_new != $vessel_name_old){
         array_push($data, $vessel_name_new, $vessel_name_old);
    }
    $data_return[] = $data;
}
echo json_encode($data_return);

基本上,代码开始遍历每个数据库行,如果满足条件,它将构建一个数组,并将该数组添加到数组对象中。因此,如果满足匹配条件,结果将如下所示:

[[row 1], [row2], [row3]]

但是,我收到此错误:

Warning: array_push() expects parameter 1 to be array, null given in C:\htdocs\alterajax.php on line 16

但是我已经指定了数组,或者至少我认为我是($data)。这也是我看到的输出:

[null,null,null,null,null,["FCMjgis","fFH465","Smokey","GIIGE"]]

我敢肯定这只是一件小事,但如果您能提供帮助,我将不胜感激。先感谢您!

标签: phparrays

解决方案


就像我说的,只需初始化您的变量或测试它是否已使用isset

$insertquery->bind_result($tracking_type, $tracking_change_date, $vessel_fcm_new, $vessel_fcm_old, $vessel_hull_id_new, $vessel_hull_id_old, $vessel_name_new, $vessel_name_old, $vessel_length_new, $vessel_length_old, $vessel_manufacturer_new, $vessel_manufacturer_old, $vessel_manufacturer_id_new, $vessel_manufacturer_id_old, $vessel_year_new, $vessel_year_old, $vessel_value_new, $vessel_value_old, $owner_id_new, $owner_id_old, $loss_payee_id_new, $loss_payee_id_old, $policy_id_new, $policy_id_old, $policy_start_date_new, $policy_start_date_old, $policy_end_date_new, $policy_end_date_old, $vessel_fcm, $vessel_hull_id, $vessel_name, $vessel_manufacturer_id);
while ($insertquery->fetch()){
    if($vessel_fcm_new != $vessel_fcm_old){
        $data = array($vessel_fcm_new, $vessel_fcm_old);
    }
    if (isset($data) && $vessel_name_new != $vessel_name_old){
         array_push($data, $vessel_name_new, $vessel_name_old);
         $data_return[] = $data;
    }
}
echo json_encode($data_return);

推荐阅读