1

カスタム WP_query ループを実行して、結果を関連付けられた配列の配列に入れようとしています..うまく機能していません..array_push が同じインデックスを持つ配列を上書きすることに気付きました。ループなので、それらは同一ではありません..しかし、まだ機能していません..私の結果は、最初のインデックス(ゼロ)でのみ正しく表示されます..これが私のコードです:

<?php 
    $permlink='permalink';
    $excerpt='exerpt';
    $title='title';
    $id='id';    
    $finalarray=array();

    for ($i = 0; $i <= 10; $i++) {
        $newitem = array(array(
            'id'.$i =>$id.$i,
            'title'.$i => $title.$i, 
            'excerpt'.$i => $excerpt.$i,
            'permalink'.$i => $permlink.$i 
        ));
        array_push($finalarray, $newitem); 
    }

    $count=0;
    foreach($finalarray as $item){
        echo $count.':'.'<br>';
        echo $item[$count]['title'.$count];
        echo $item[$count]['id'.$count];
        echo $item[$count]['permalink'.$count];
        $count++;
    }

    var_dump($finalarray);
?>

私の結果は次のとおりです。

0:
title0id0permalink01:
2:
3:
4:
5:
6:
7:
8:
9:
10:
array(11) { [0]=> array(1) { [0]=> array(4) { ["id0"]=> string(3) "id0" ["title0"]=> string(6) "title0" ["excerpt0"]=> string(7) "exerpt0" ["permalink0"]=> string(10) "permalink0" } } [1]=> array(1) { [0]=> array(4) { ["id1"]=> string(3) "id1" ["title1"]=> string(6) "title1" ["excerpt1"]=> string(7) "exerpt1" ["permalink1"]=> string(10) "permalink1" } } [2]=> array(1) { [0]=> array(4) { ["id2"]=> string(3) "id2" ["title2"]=> string(6) "title2" ["excerpt2"]=> string(7) "exerpt2" ["permalink2"]=> string(10) "permalink2" } } [3]=> array(1) { [0]=> array(4) { ["id3"]=> string(3) "id3" ["title3"]=> string(6) "title3" ["excerpt3"]=> string(7) "exerpt3" ["permalink3"]=> string(10) "permalink3" } } [4]=> array(1) { [0]=> array(4) { ["id4"]=> string(3) "id4" ["title4"]=> string(6) "title4" ["excerpt4"]=> string(7) "exerpt4" ["permalink4"]=> string(10) "permalink4" } } [5]=> array(1) { [0]=> array(4) { ["id5"]=> string(3) "id5" ["title5"]=> string(6) "title5" ["excerpt5"]=> string(7) "exerpt5" ["permalink5"]=> string(10) "permalink5" } } [6]=> array(1) { [0]=> array(4) { ["id6"]=> string(3) "id6" ["title6"]=> string(6) "title6" ["excerpt6"]=> string(7) "exerpt6" ["permalink6"]=> string(10) "permalink6" } } [7]=> array(1) { [0]=> array(4) { ["id7"]=> string(3) "id7" ["title7"]=> string(6) "title7" ["excerpt7"]=> string(7) "exerpt7" ["permalink7"]=> string(10) "permalink7" } } [8]=> array(1) { [0]=> array(4) { ["id8"]=> string(3) "id8" ["title8"]=> string(6) "title8" ["excerpt8"]=> string(7) "exerpt8" ["permalink8"]=> string(10) "permalink8" } } [9]=> array(1) { [0]=> array(4) { ["id9"]=> string(3) "id9" ["title9"]=> string(6) "title9" ["excerpt9"]=> string(7) "exerpt9" ["permalink9"]=> string(10) "permalink9" } } [10]=> array(1) { [0]=> array(4) { ["id10"]=> string(4) "id10" ["title10"]=> string(7) "title10" ["excerpt10"]=> string(8) "exerpt10" ["permalink10"]=> string(11) "permalink10" } } }

したがって、値が配列内にあるように見えますが、最初のインデックス (ゼロ) のみが正しく出力されます..何か提案はありますか? また、関連付けられた配列をプッシュして上書きしないようにする方法はありますか?インデックスをインクリメントする必要はありません。

4

2 に答える 2

0

ここにはいくつかの問題があります。

for ($i = 0; $i <= 10; $i++) {
    $newitem = array(array(
        'id'.$i =>$id.$i,
        'title'.$i => $title.$i, 
        'excerpt'.$i => $excerpt.$i,
        'permalink'.$i => $permlink.$i 
    ));
    array_push($finalarray, $newitem); 
}

4 つの要素を含む配列を含む配列を にプッシュしてい$finalarrayます。アウターの必要はありませんarray()。あなたはただ行うことができます$newitem = array(...)array_push配列の末尾に追加して、インデックスをインクリメントします。

第二にforeach、あなたの$count変数はまったく必要ありません。を使用する場合foreach$itemは配列の要素です。インデックスで調べる必要はありません。

ただし、インデックスが必要な場合は、foreachそれを提供できます。

foreach($finalarray as $count=>$item){
    echo $count.':'.'<br>';
    echo $item['title'.$count];
    echo $item['id'.$count];
    echo $item['permalink'.$count];
}

$itemそれぞれに 1 つの配列があったため、元のコードは機能しませんでした。その配列には 1 つの項目がありました。各要素では、内側の配列は常にインデックス 0 でした。インクリメントにより、最初の要素のみが機能し、他の要素は存在し$countなかったため機能しませでした。$item[1] $item[0]

于 2013-01-30T17:24:48.913 に答える
-1
for ($i = 0; $i <= 10; $i++) {
        $newitem = array(array(
            'id'.$i =>$id.$i,
            'title'.$i => $title.$i, 
            'excerpt'.$i => $excerpt.$i,
            'permalink'.$i => $permlink.$i 
        ));
        $finalarray[] = $newitem; 
        unset($newitem);
    }

最終配列のキーは気にしないので、 $finalarray[] を使用して追加するだけです

于 2013-01-30T17:19:03.610 に答える