2

Right-To-Left をサポートする PHP でサイトを開発しているときに、奇妙な問題が発生します。

以下の 2 つのスクリーンショットをご覧ください。

まずは通常出力。

ここに画像の説明を入力

2 つ目は RTL データ表示です。

ここに画像の説明を入力

ご覧のとおり、データはページ番号順に表示されません。

通常の出力では、数値は 32、次に 43、67、88、325 と表示されます。しかし、Right-To-Left 出力では、数値は昇順で表示されません。代わりに、最初に 32、次に 88、67、43 などを出力します。

上記の出力 (これらのスクリーンショットに表示) では、以下のコードを使用しました。

aasort($index['Book']['Index'],"page_number");

foreach($index['Book']['Index'] as $newIndex) :

    $indLink = stripslashes($newIndex['content']);
    $indPageNumberLink = $newIndex['page_number'];

    $booksIndex .=  " <span>". $indPageNumberLink ." (". $indLink ."). </span>";

endforeach;

echo "<dd class='bookindex_content'> ". rtrim($booksIndex,",") ."</dd></dl>";

そして、これは私のaasort機能です:

function aasort (&$array, $key)
{
    $sorter = array();
    $ret = array();
    reset($array);
    foreach ($array as $ii => $va)
    {
        $sorter[$ii]=$va[$key];
    }
    asort($sorter);
    foreach ($sorter as $ii => $va)
    {
        $ret[$ii]=$array[$ii];
    }
    $array=$ret;
}

つまり、これが問題です。Right-To-Left で作業している場合を除き、数値はすべて昇順で出力されます。

これについての説明は何ですか?私は何を間違っていますか。

4

1 に答える 1

0

あなたのサイトでどのように右から左へのサポートを行っているのかわかりません。また、明確化を求めるためにまだコメントすることはできません (スクリーンショットに加えて、いくつかの HTML 出力が役に立つでしょう)。推測してみて。

私の意見では、あなたの 2 番目のスクリーンショットはあなたが言った順序を示していません。括弧内の内容を詳しく見ると、RTL 順序の結果は以前と同じように見えます (ブック 5、最初の行)。左から右に読んでいますが32 (、右に押して反転させて、 のように見え) 32ます。2 行目も同様).です.(

どうしてこんなにぐちゃぐちゃになってしまったのかわかりませんが、ソートの問題ではなく、RTL表示に関するレイアウトの問題のようです。PHP からの出力が html with RTL オプションによって期待されるかどうかを確認します。

于 2013-07-28T17:57:45.653 に答える