我需要将'transaction_user_id'的值更改为递增的数字。 如果数组具有键[transaction_user_id],则应将其赋值为1,以此类推。例如,如果数组具有[transaction_user_id],则[transaction_user_id] = 1,第二个为[transaction_user_id] =2。
<system.web>
<httpRuntime targetFramework="4.6.2" maxRequestLength="200000" />
<!-- maxRequestLength is in KB, not B -->
</system.web>
答案 0 :(得分:3)
您可以使用array_walk
$i = 1;
array_walk($arr, function(&$v,$k) use (&$i){
array_key_exists('transaction_user_id', $v) ? ($v['transaction_user_id'] = $i AND $i++) : '';
});
结果:-
Array
(
[0] => Array
(
[transaction_user_id] => 1
[transaction_no] => 19500912050218
[transaction_status] => cancelled
)
[1] => Array
(
[transaction_no] => 36010512050819
[transaction_status] => cancelled
)
[2] => Array
(
[transaction_user_id] => 2
[transaction_no] => 19020512050820
[transaction_status] => cancelled
)
[3] => Array
(
[transaction_user_id] => 3
[transaction_no] => 27050512050821
[transaction_total_amount] => 79
[transaction_date] => 1336476927
[transaction_status] => cancelled
)
)
答案 1 :(得分:2)
有两种方法。
您必须在原始数组中指定键路径才能更改值 因为默认情况下它不会通过引用传递子数组。
$increment_id = 1;
foreach($arr as $key=>$transaction) {
if(isset($transaction['transaction_user_id'])) {
$arr[$key]['transaction_user_id'] = $increment_id++;
}
}
在此示例中,我将子数组作为参考传递,因此您可以访问该值 您想直接更改并将其应用于原始数组。
$increment_id = 1;
foreach($arr as &$transaction) {
if(isset($transaction['transaction_user_id'])) {
$transaction['transaction_user_id'] = $increment_id++;
}
}
答案 2 :(得分:0)
如果重复的用户ID需要对应于相同的增量号,例如,如果由于数组2和3都具有相同的transaction_user_id而应同时分配数组2和3,则您必须随时跟踪该关系
迭代数据,更新一个数组,该数组在您进行操作时将transaction_user_id映射到新的增量ID。如果找到一个新的,则在数组中为其分配一个递增的值。然后用正确的增量值替换数据中的值。
if(fredrikVald)
{
//add code here
spelare.setText("Fredrik Used Fireball");
}
(似乎不是这种情况,因为您已经接受了不这样做的答案,但是我已经写了,所以无论如何它都会贴出来,以防其他人找到它。)