我的情况非常复杂,我无法想出一个完美的逻辑。 这是我需要做的: 我通过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个项目。
另外,我认为我不能通过这个达到我想要的目标。
请指教。
答案 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);