在php中为一个exsting数组添加一个键(用于重新排列数组)


Add a key to an exsting array in php (for rearranging an array)

我想重新排列数组($activity_names)的顺序

$next_ordernr = 1000;
foreach( $activity_names as $term_id=>$activityarea_name) {
    $onr = $custom_ordernrs[$term_id];
    if ((int)$onr === 0) {$onr = $next_ordernr; $next_ordernr++;}
    $activity_names[$term_id]['reorder']= $onr;
}

我知道我应该怎么做,但当我试图向现有数组添加键时,我有点卡住了(这应该是容易的部分;-))。

我收到这个警告:

CCD_ 2。

"重新排序"键以前不存在,但我想我可以像上面一样,将键重新排序添加到现有数组中。

$next_ordernr = 1000;
foreach( $activity_names as $term_id=>$activityarea_name) {
    $onr = $custom_ordernrs[$term_id];
    if ((int)$onr === 0) {$onr = $next_ordernr; $next_ordernr++;}
    $activity_names[$term_id]= $onr;
}

工作符合预期。

我只想为现有数组添加一个键。我在俯瞰什么?

更新$activity_names阵列可能如下所示:

$activity_names[24] = 'Activityname1';
$activity_names[36] = 'Activityname2';
$activity_names[14] = 'Activityname3';
$activity_names[54] = 'Activityname4';
$activity_names[104] = 'Activityname5';

更新2当我想到这一点时,我可能处理得不正确。。。我想在$custom_ordernrs阵列的基础上重新排列$activity_names阵列的顺序

$activity_names$custom_ordernrs-阵列可能如下所示:

$activity_names[24] = 'Activityname1';
$activity_names[36] = 'Activityname2';
$activity_names[14] = 'Activityname3';
$activity_names[54] = 'Activityname4';
$activity_names[104] = 'Activityname5';
$custom_ordernrs[24] = 5;
$custom_ordernrs[36] = 4;
$custom_ordernrs[14] = 3;
$custom_ordernrs[54] = 2;
$custom_ordernrs[104] = 1;

应按以下顺序在数组中产生:

$activity_names[104] = 'Activityname5';
$activity_names[54] = 'Activityname4';
$activity_names[14] = 'Activityname3';
$activity_names[36] = 'Activityname2';
$activity_names[24] = 'Activityname1';
$activity_names['your_key']= $value;

如果有人偶然发现了同样的问题。。。

以另一种方式处理这个问题。我重新排列了$custom_ordernrs数组(而不是试图向现有数组$activity_names添加密钥),并在此基础上创建了一个临时数组,然后用临时数组替换了$activity_names

asort($custom_ordernrs); //Sort from low to high and maintin indexes(keys)
$temp = array();
foreach($custom_ordernrs as $term_id=>$an) {                                
    $temp[$term_id] = $activity_names[$term_id];
}
$activity_names = $temp;