0

我有一个非常复杂的情况,我就是想不出一个完美的逻辑。这是我需要做的:我通过 API 获取 10 篇文章,并且我需要以正确的发布顺序显示它们。问题是有时文章会自动更改其顺序。我需要做的是,无论他们是否更改订单或他们在我页面上的订单是否保持不变。例如如果 array('itemA', 'itemB', 'itemC', 'itemD') 变成 array('itemC', 'itemA', 'itemB', 'itemD')

我仍然想按原始顺序显示,即 itemA、B、C 和 D。

我尝试了 in_array() 函数来检查文章是否已经存在,但它似乎无法正常工作。

看一看:

$post_array = array();
    foreach ($Info AS $key => $post_array){
        if (!in_array($Info[$key]->postId, $post_array)){
            array_unshift($post_array, $Info[$key]);
            echo '<h2>Added</h2>' ;
        }else {
        echo '<h2>not Added</h2>' ;
        }
    }

它总是显示添加,每次我运行它加上一个警告说

警告:array_unshift() 期望参数 1 是数组

警告:in_array() 期望参数 2 是数组

我真正想做的是,最初将所有 10 篇文章添加到 $post_array,然后在开始时仅将新/唯一文章添加到 $post_array。并显示 $post_array 中的 10 个项目。

另外,我不认为我可以通过这个实现我想要的。

请指教。

4

1 回答 1

1

似乎相当多余:

    if (!in_array($Info[$key]->postId, $post_array)){

在您运行它时,$post_array 已经与 $Info[$key] 的值相同,因为您的 foreach 是:

    foreach ($Info AS $key => $post_array){

假设那些 $Info[$key] 值是子数组,那么你的 in_array 调用是向后的,语法是

in_array($array, $value_to_find)

但你在做

in_array($value_to_find, $array);
于 2013-04-03T15:50:37.933 回答