2

私は1つに結合した以下の配列を持っています。2 番目の配列 は$ads、最初の配列 にランダムに挿入され$EM_Eventsますが、挿入された項目は挿入時に常にまとめられます。それらが最初の配列全体にランダムに挿入され、一緒にとどまらず、最初の配列の順序が変更されないようにしたいと思います。私は何が欠けていますか?

$EM_Events = EM_Events::get( array(
'scope'=>'future', 
'limit'=>6,
'category'=>'6'
));

$ads = EM_Events::get( array(
'scope'=>'future', 
'limit'=>2,
'category'=>'56'
));


$offset = array_rand($EM_Events);
array_splice($EM_Events, $offset, 0, $ads);
4

2 に答える 2

2

array_spliceあなたが言うように、配列内のあるオフセットで単一の挿入のみを実行するため、2番目の配列は一緒に残ります。

2 番目の配列のすべての要素をループし、それぞれを順番に挿入する必要があります。(未テスト) のようなもの:

foreach ( $ads as $ad ) {
    $offset = array_rand($EM_Events);
    array_splice($EM_Events, $offset, 0, $ad);
}

多分

while ( $ad = array_pop($ads) ) {
    $offset = array_rand($EM_Events);
    array_splice($EM_Events, $offset, 0, $ad);
}
于 2012-08-18T17:18:20.157 に答える
-1

あなたがやろうとしているのは、2番目の配列がランダム化されていることです.1番目の配列のランダムな場所に含めようとしています. ただし、2 番目の配列をランダム化した後、最初の配列の偶数スペースを空にします。つまり、$EM_EVENTS(0)、$EM_EVENTS(1)、$EM_EVENTS(2)、$EM_EVENTS(3) の要素は $ に保存されます。 EM_EVENTS(1)、$EM_EVENTS(3)、$EM_EVENTS(5) などで、偶数スペースはループを使用して埋められます。配列はすでにランダム化されているため、目的の出力が得られます。クリア?

于 2012-08-18T17:28:20.100 に答える