说我有新的热门新闻。我想在视图中并排显示它们。当然可能是有更多热门新闻而不是新闻(例如早上),反之亦然。这会导致柱子长度不均匀。
这就是为什么我要构建两个数组的原因。一个是热门新闻,另一个是新闻。
$hot = array(
'hotObj 1',
'hotObj 2',
'hotObj 3',
'hotObj 4',
);
$new = array(
'newObj 1',
'newObj 2',
);
我想要的结果是:
$hot = array(
'hotObj 1',
'newObj 1',
'hotObj 2',
'newObj 2',
'hotObj 3',
'hotObj 4',
);
我怎样才能做到这一点?哪个阵列更长并不重要。 array_merge()只会把第二个数组放在最后,这不是我想要的。
答案 0 :(得分:3)
您只需使用for
循环就可以实现它,而无需使用sort
或array_merge
功能,如
$count = (count($hot) > count($new)) ? count($hot) : count($new);
$result = [];
for($i= 0; $i < $count;$i++){
if(isset($hot[$i])){
$result[] = $hot[$i];
}
if(isset($new[$i])){
$result[] = $new[$i];
}
}
print_r($result);
<强>输出:强>
Array
(
[0] => hotObj 1
[1] => newObj 1
[2] => hotObj 2
[3] => newObj 2
[4] => hotObj 3
[5] => hotObj 4
)
答案 1 :(得分:0)
有两个数组之和的循环并根据需要插入它。 尝试以下(工作) -
$hcount=count($hot);
$ncount=count($new);
$max=$hcount+$ncount;
$result=array();
$i=0;
$j=0;
$k=0;
while($i<=$max)
{
if($i%2==1 && $j<$ncount)
{
$t=$new[$j++];
}
else
{
if($k<$hcount)
$t=$hot[$k++];
}
$result[$i]=$t;
$i++;
}
print_r($result);
<强>输出强>
Array ( [0] => hotObj 1 [1] => newObj 1 [2] => hotObj 2
[3] => newObj 2 [4] => hotObj 3 [5] => hotObj 4 [6] => hotObj 4 )