我有两个数组我正在将一个数组插入另一个数组。使用foreach循环对第一个数组的每个元素执行此操作。但是我能够在第二次迭代期间只将第一对键值对附加到第一个数组,而不是。你能帮我实现这个数组元素吗?我的代码如下:
$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
)
你能解决我的这个问题。提前谢谢。
答案 0 :(得分:1)
user_state 和 user_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数组。检查它为什么是空的。可能你在那个循环中的第二个查询不是你想象的那样。
答案 1 :(得分:0)
您的插入位于数组数组中。试试这个
$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);
?>