添加到有限大小的阵列

时间:2013-04-03 15:44:54

标签: php arrays foreach

我的情况非常复杂,我无法想出一个完美的逻辑。 这是我需要做的: 我通过API获取10篇文章,我需要以正确的顺序显示它们。问题是有时文章会自动更改其顺序。我需要做的是无论他们是否改变他们的订单,或者他们在我的页面上的订单保持不变。 例如,如果 数组('itemA','itemB','itemC','itemD') 变 数组('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个项目。

另外,我认为我不能通过这个达到我想要的目标。

请指教。

1 个答案:

答案 0 :(得分: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);