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

时间:2015-11-10 09:55:14

标签: php arrays sorting

我想重新排列数组的顺序($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;
}

我理解我应该怎么做,但是当我尝试将键添加到现有数组(这应该是简单的部分; - )时,我有点卡住。)。

我收到了这个警告:

  

Warning: Illegal string offset 'reorder' in ...

之前不存在“重新排序”键,但我认为我可以在上面将键重新排序添加到现有数组中。

$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';

UPDATE2 在考虑它时,我可能正在接近这个...... 我想根据$activity_names - 数组

重新排列$custom_ordernrs数组的顺序

$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';

2 个答案:

答案 0 :(得分:0)

$activity_names['your_key']= $value;

答案 1 :(得分:0)

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

以另一种方式处理该问题。我重新安排了$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;