当前位置: 首页 > 知识库问答 >
问题:

在循环时向数组添加字段和值?

公良昕
2023-03-14

我有以下2个数组,我需要根据第二个的ID值添加第一个的值作为Key,这样我就可以订购第二个数组DESC:

$视图:

Array ( [1851] => 12 [14341] => 7 [17834] => 3 )

我有以下数组对象

$most_seen_list:

Array ( 
    [0] => WP_Post Object ( 
            [ID] => 17834 
            [post_date] => 2021-10-20 16:01:50 
            [post_date_gmt] => 2021-10-20 21:01:50 
        )
    [1] => WP_Post Object ( 
            [ID] => 14341 
            [post_date] => 2021-06-01 17:57:00 
            [post_date_gmt] => 2021-06-01 22:57:00 
        )
    [2] => WP_Post Object ( 
            [ID] => 1851
            [post_date] => 2021-02-13 18:09:00 
            [post_date_gmt] => 2021-02-13 23:09:00 
        )
)

在下一个foreach中,我将完成它,我想更改[0]。。[1]..[3] 使用我从另一个数组中获得的值设置键:

foreach ($most_seen_list as $key => $value) {
    $newResult[$value->ID];
}

预期产出:

Array ( 
    [12] => WP_Post Object ( 
            [ID] => 1851
            [post_date] => 2021-02-13 18:09:00 
            [post_date_gmt] => 2021-02-13 23:09:00 
            )
    [7] => WP_Post Object ( 
            [ID] => 14341 
            [post_date] => 2021-06-01 17:57:00 
            [post_date_gmt] => 2021-06-01 22:57:00 
        )
    [3] => WP_Post Object ( 
            [ID] => 17834 
            [post_date] => 2021-10-20 16:01:50 
            [post_date_gmt] => 2021-10-20 21:01:50 
        )
)

共有2个答案

王轶
2023-03-14

如果您不需要查看量作为键(如果某些查看量相同,这可能会有问题),那么您可以使用以下命令以正确的顺序对帖子进行排序。

// sort asc on views
usort($most_seen_list, function($postA, $postB) use ($views) {
    return $views[$postA->ID] <=> $views[$postB->ID];
});
$most_seen_list = array_reverse($most_seen_list); // reverse the order, so most viewed is first

在此之后,您仍然可以使用以下方式获得每个帖子的视图:

$views[$oneOfThePosts->ID];
司马奇希
2023-03-14

我假设您已经对$views数组进行了排序。因此,您需要处理每个$most\u seen\u list对象数组,以便使用内部循环找到正确的对象

$views = Array ( 1851 => 12, 14341 => 7, 17834 => 3 );
$most_seen_list = Array ( 
    (Object) [ 'ID' => 17834,'post_date' => '2021-10-20 16:01:50', 'post_date_gmt' => '2021-10-20 21:01:50',
    ],
    (Object) [ 'ID' => 14341, 'post_date' => '2021-06-01 17:57:00', 'post_date_gmt' => '2021-06-01 22:57:00'
    ],
    (Object) ['ID' => 1851, 'post_date' => '2021-02-13 18:09:00', 'post_date_gmt' => '2021-02-13 23:09:00' 
    ]
);

$new = [];
//get the ID'2 in the predefined order set in $views
foreach ( $views as $key=>$val) {
    // for each view find the correct object in $most_seen_list
    foreach( $most_seen_list as $obj) {
        if ( $obj->ID == $key ) {
            $new[$val] = $obj;
            break;  // terminate this iteration
        }
    }
}

print_r($new);

结果

Array
(
    [12] => stdClass Object
        (
            [ID] => 1851
            [post_date] => 2021-02-13 18:09:00
            [post_date_gmt] => 2021-02-13 23:09:00
        )

    [7] => stdClass Object
        (
            [ID] => 14341
            [post_date] => 2021-06-01 17:57:00
            [post_date_gmt] => 2021-06-01 22:57:00
        )

    [3] => stdClass Object
        (
            [ID] => 17834
            [post_date] => 2021-10-20 16:01:50
            [post_date_gmt] => 2021-10-20 21:01:50
        )

)
 类似资料:
  • 如果我在问这个问题时犯了任何错误,我会提前道歉。我不熟悉stackoverflow和java。 我的问题是,我希望能够将一个普通的double数组转换为arraylist,我需要对这个arraylist元素进行操作,以便将值从x更改为-x(使用接口) 我正试图首先使用for循环元素逐个元素将数组double转换为arraylist(我认为应该先得到它),但.add似乎不起作用,这是我研究它时出现的

  • 我正在使用wordpress 4.1与ACF v4。我有一个添加了自定义字段的自定义帖子类型,每次添加新类别时都需要添加新的自定义字段。如果我自动添加类别“轿车”,我必须添加自定义字段“轿车”。我可以使用插件函数执行此操作吗?或者我必须用代码,在数据库中插入来做到这一点?提前致谢!!

  • 在foreach循环中,PHP似乎从一开始就读取了整个数组,因此如果您突然需要将新项附加到数组中,它们将不会被循环处理: 仅打印出:

  • 我有一个游戏,每隔X秒它就会把内存中改变的值写回我的数据库。当编辑这些值保存的数据时,它们存储在容器(HashMaps和ArrayList)中。 为了简单起见,假设我只有一个容器可以写入数据库: 我的DB写入循环: 我的更新方法: 我是否需要在为dbEntitiesDeletesBacklog HashMap和本摘录中未包含的其他容器“保存到DB”时创建某种锁定机制?我想我需要这样做,因为它会创建

  • 问题内容: 我知道已经有一个关于此主题的问题(将字段添加到结构化numpy数组的最简洁方法),请参阅 将字段添加到结构化的numpy数组 但是我对那里给出的答案有疑问… 如果您使用的是numpy 1.3,那么还有numpy.lib.recfunctions.append_fields() 我仍然有numpy 1.3,但它无法识别此功能,并且在numpy的文档中也没有找到任何有关此功能的信息。函数发

  • 我有一个来自AJAX调用的JSON数组,如下所示: 我想在数据表上使用此数据,但我想根据字段标题(组)向表中的每一行添加文本输入。因此,我想将此列添加到每个数组,类似于: 这样DataTables将在每个新行上添加文本输入。如何使用jQuery或javascript实现这一点? 我尝试通过数组进行迭代: 但这显示错误,