1

我有两个数组,我将一个数组插入另一个数组。使用 foreach 循环对第一个数组的每个元素完成此操作。但是我只能在第二次迭代期间将第一对键值对附加到第一个数组,但它不能。你能帮我为 aal 数组元素实现这个吗?我的代码如下:

$data = $grid->GetData();
        //print_d($data);

        foreach($data as $key => $value) { 
          $sql  =" SELECT users_details.user_state, users_details.user_city FROM ".TBL_USERS." AS user JOIN ";
          $sql .= TBL_USERS_DETAILS." AS users_details on user.user_id = users_details.user_id ";
          $sql .=" WHERE user.user_id = '". $value['user_id']."'" ;

          $gDb->Query( $sql );
          $user_data = $gDb->FetchArray(MYSQL_FETCH_SINGLE);

          $data[$key]['user_state'] = $user_data['user_state'];
          $data[$key]['user_city'] = $user_data['user_city'];
        }

第一个名为 $data 的数组如下:

Array
(
    [0] => Array
        (
            [user_id] => 9def02e6337b888d6dbe5617a172c18d
            [user_first_name] => Ashutosh
            [user_last_name] => Modi
            [user_email] => ashutosh.modi@gmail.com
            [user_status] => enable
            [user_subscription] => lifetime
            [user_registered_type] => online
            [user_reg_date] => 1325581397
        )

    [1] => Array
        (
            [user_id] => a6d22e4cc3f65778a60b359842bcec82
            [user_first_name] => Dilip
            [user_last_name] => Modi
            [user_email] => dm.modi@gmail.com
            [user_status] => enable
            [user_subscription] => period
            [user_registered_type] => online
            [user_reg_date] => 1325152066
        )

)

命名的第二个数组的第一次迭代$user_data如下:

    Array
(
    [user_state] => Rajasthan
    [user_city] => Jhunjhunu
)

现在附加这个后,数组 $data 变成如下:

Array
(
    [0] => Array
        (
            [user_id] => 9def02e6337b888d6dbe5617a172c18d
            [user_first_name] => Ashutosh
            [user_last_name] => Modi
            [user_email] => ashutosh.modi@gmail.com
            [user_status] => enable
            [user_subscription] => lifetime
            [user_registered_type] => online
            [user_reg_date] => 1325581397
            [user_state] => Rajasthan
            [user_city] => Jhunjhunu
        )

    [1] => Array
        (
            [user_id] => a6d22e4cc3f65778a60b359842bcec82
            [user_first_name] => Dilip
            [user_last_name] => Modi
            [user_email] => dm.modi@gmail.com
            [user_status] => enable
            [user_subscription] => period
            [user_registered_type] => online
            [user_reg_date] => 1325152066
            [user_state] => 
            [user_city] => 
        )

)

我不明白为什么第二个数组具有user_state 和 user-city的空白值。即使$user_data在第二次迭代中数组的值如下:

Array
(
    [user_state] => Arunachal Pradesh
    [user_city] => Shollong
)

你能解决我的这个问题吗。提前致谢。

4

2 回答 2

1

user_stateuser_city都被添加了,所以你的代码工作正常。你必须知道为什么$user_data在那里是空的。

使您的代码如下所示:

      echo $sql;
      print_r($user_data);
      $data[$key]['user_state'] = $user_data['user_state'];
      $data[$key]['user_city'] = $user_data['user_city'];

这将为每个循环输出您的 sql,并且 print_r 函数(或 var_dump)将在这些行之前回显 $user_data 数组。检查为什么它是空的。可能您在该循环中的第二个查询不是您认为的那样。

于 2013-09-03T12:21:13.547 回答
0

您的插入位于 array 数组内。尝试这个

           $i=0;
       foreach($data as $key => $value) { 
       $sql  =" SELECT users_details.user_state, users_details.user_city FROM ".TBL_USERS." AS user JOIN ";
      $sql .= TBL_USERS_DETAILS." AS users_details on user.user_id = users_details.user_id ";
      $sql .=" WHERE user.user_id = '". $value['user_id']."'" ;

      $gDb->Query( $sql );
      $user_data = $gDb->FetchArray(MYSQL_FETCH_SINGLE);
         $data[$i]['user_state'] = $user_data['user_state'];
         $data[$i]['user_city'] = $user_data['user_city'];
          $i++;

其中$i 代表数据文件中的数组键,默认索引从 0 开始,然后转到 1,2 等,以此类推。

还探索以下程序可能会发现任何好的东西并且有助于解决您的问题。例如一个程序来更新数组内的数组。

        <?php
    $d3 = array('0'=>array('b'=>'1','c'=>'2'),'1'=>array('b'=>'3','c'=>'4'));
           $i=0;
           foreach($d3 as $k => $v){
           $d3[$i]['b'] = "h";
           $i++;
         }
       print_r($d3);
          ?>
于 2013-09-03T13:54:27.547 回答