96

このコードのリスト項目の順序を逆にしたいと思います。基本的には、最も古いものから最近のものまでの一連の年であり、その出力を逆にしようとしています。

<?php
    $j=1;     
    foreach ( $skills_nav as $skill ) {
        $a = '<li><a href="#" data-filter=".'.$skill->slug.'">';
        $a .= $skill->name;                 
        $a .= '</a></li>';
        echo $a;
        echo "\n";
        $j++;
    }
?>  
4

9 に答える 9

201

後ろ向きに歩く

純粋なPHPソリューションを探している場合は、リストを逆方向に数えて、前後にアクセスすることもできます。

$accounts = Array(
  '@jonathansampson',
  '@f12devtools',
  '@ieanswers'
);

$index = count($accounts);

while($index) {
  echo sprintf("<li>%s</li>", $accounts[--$index]);
}

上記$indexは要素の総数に設定され、次にそれらにバックツーフロントでアクセスを開始し、次の反復のインデックス値を減らします。

配列を逆にする

このarray_reverse関数を利用して配列の値を反転し、逆の順序でそれらにアクセスできるようにすることもできます。

$accounts = Array(
  '@jonathansampson',
  '@f12devtools',
  '@ieanswers'
);

foreach ( array_reverse($accounts) as $account ) {
  echo sprintf("<li>%s</li>", $account);
}
于 2012-05-27T22:04:05.817 に答える
34

または、 array_reverse関数を使用することもできます。

于 2012-05-27T22:05:48.123 に答える
24

array_reverse()ソース配列を変更しませんが、新しい配列を返します。( を参照してくださいarray_reverse()。)したがって、最初に新しい配列を格納するか、 for ループの宣言内で関数を使用する必要があります。

<?php 
    $input = array('a', 'b', 'c');
    foreach (array_reverse($input) as $value) {
        echo $value."\n";
    }
?>

出力は次のようになります。

c
b
a

したがって、OP に対処するには、コードは次のようになります。

<?php
    $j=1;     
    foreach ( array_reverse($skills_nav) as $skill ) {
        $a = '<li><a href="#" data-filter=".'.$skill->slug.'">';
        $a .= $skill->name;                 
        $a .= '</a></li>';
        echo $a;
        echo "\n";
        $j++;
}

$j最後に、は の逆方向のウォークを取得するための最初の試行で使用されるカウンターか、配列$skills_navをカウントする方法のいずれかであると推測します。$skills_nav前者の場合は、正しい解決策が得られたので削除する必要があります。後者の場合、ループの外側で . に置き換えることができます$j = count($skills_nav)

于 2015-10-31T18:25:05.930 に答える
4

インデックス付き配列 (連想配列や多次元配列ではない) を逆にする必要があると仮定すると、単純なfor ループで十分です。

$fruits = ['bananas', 'apples', 'pears'];
for($i = count($fruits)-1; $i >= 0; $i--) {
    echo $fruits[$i] . '<br>';
} 
于 2016-11-30T04:47:52.460 に答える
4

usort関数を使用して、独自の並べ替えルールを作成できます

于 2012-05-27T22:02:42.937 に答える
1

配列が SQL クエリを介して設定されている場合は、MySQL で結果を逆にすることを検討してください。

SELECT * FROM model_input order by creation_date desc
于 2016-01-26T14:02:53.367 に答える
0

配列にブール値の false 値がない場合は、内部ポインター関数に基づいて次のコードを使用できます。

$array = ['banana', 'apple', 'pineapple', 'lemon'];

$value = end($array);
while ($value !== false) {
     // In case you need a key
    $key = key($array);

    // Do something you need to
    echo $key . ' => ' . $value . "\n";

    // Move pointer
    $value = prev($array);
}

このソリューションは、任意のキーを持つ連想配列に対して機能し、既存のものを変更したり、新しいものを作成したりする必要はありません。

于 2022-02-10T09:13:39.880 に答える