2

在使用从右到左支持的 PHP 开发网站时,我遇到了一个奇怪的问题。

看看下面这两个屏幕截图。

首先是正常输出。

在此处输入图像描述

第二个带有 RTL 数据显示。

在此处输入图像描述

如您所见,数据不是按页码顺序显示的。

在正常输出中,数字显示为 32,然后是 43,然后是 67、88 和 325。但是,在从右到左的输出中,数字按升序显示。相反,它们输出:首先是 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;
}

简而言之,这就是问题所在:数字都是按升序输出的,除非我从右到左工作。

对此有何解释?我究竟做错了什么。

4

1 回答 1

0

我不确定你如何在你的网站上支持从右到左,我还不能评论问你一些澄清(除了截图之外,一些 html 输出会很有用),所以我正在尝试猜测。

在我看来,您的第二个屏幕截图没有显示您所说的顺序。仔细观察括号之间的内容,RTL 顺序结果似乎与之前相同 - 第 5 本书,第一行 - 从左到右阅读,但32 (被推到右侧并倒置,因此看起来像) 32. 第二行类似的东西:).从右侧推到左侧作为.(.

我不明白它是如何搞砸的,但这似乎不是排序问题,而是与 RTL 显示相关的布局问题。我会检查 PHP 的输出是否是带有 RTL 选项的 html 所期望的。

于 2013-07-28T17:57:45.653 回答