小编bob*_*byh的帖子

按特定顺序对PHP中的对象数组进行排序

我在PHP中有两个数组.第一个数组($ author_array)由特定顺序的user_ids组成,如下所示:(8,1,6)

第二个数组($ user_results)由一组对象组成,如下所示:

Array
(
    [0] => stdClass Object
        (
            [ID] => 1
            [user_login] => user1
        )
    [1] => stdClass Object
        (
            [ID] => 6
            [user_login] => user6
        )
    [2] => stdClass Object
        (
            [ID] => 8
            [user_login] => user8
        )
)
Run Code Online (Sandbox Code Playgroud)

我想"排序"第二个数组,使其按此顺序排列,它与第一个数组(8,1,6)中的值的顺序相匹配.所以它看起来像这样:

Array
(
    [0] => stdClass Object
        (
            [ID] => 8
            [user_login] => user8
        )
    [1] => stdClass Object
        (
            [ID] => 1
            [user_login] => user1
        )
    [2] => stdClass Object
        (
            [ID] => 6
            [user_login] => …
Run Code Online (Sandbox Code Playgroud)

php arrays object

14
推荐指数
1
解决办法
2万
查看次数

SQL - 在给定特定WHERE子句的情况下查找下一行和上一行

我有一个名为bb_posts的MySQL表,由bbPress论坛使用.它有一个名为topid_id的自动增量字段和另一个名为topic_poster的字段.

我正在尝试编写一个找到"同一作者的下一篇文章"的函数.因此,例如,假设用户位于显示主题123的特定页面上.如果您执行SQL查询:

SELECT *
FROM `bb_topics`
WHERE `topic_poster` = 5
ORDER BY `topic_id` ASC
Run Code Online (Sandbox Code Playgroud)

这可能会返回以下行:

topic_id    topic_poster
6           5
50          5
123         5
199         5
2039        5

我想做的是写一个返回这两行的SQL查询:

topic_id    topic_poster
50          5
199         5

这将是具有topic_id为123的行的PRIOR行,以及该行的AFTER行.

如果在一个查询中执行此操作太难了,那么将其分解为两个查询肯定是可以的...

我想避免做整个SQL查询("SELECT*FROM bb_topicsWHERE topic_poster= 5")并循环遍历结果,因为结果集有时很大.

这可能吗?:-)

mysql sql

9
推荐指数
1
解决办法
1万
查看次数

编码带有引号和换行符的PHP变量,以传递给Javascript函数(然后反转编码)

假设您有一个名为$ description的PHP变量,其中包含以下值(包含引号和换行符):

Tromp L'oeil Sheath Dress

You will certainly "trick the eye" of many in this gorgeous illusion. Add it to your fall wardrobe before it disappears.
Run Code Online (Sandbox Code Playgroud)

您希望将此变量的内容传递给Javascript函数,该函数将该值写入文本类型的INPUT中.

你会怎么做?我试过这个:

$description = htmlspecialchars ( $product->description, ENT_QUOTES );
Run Code Online (Sandbox Code Playgroud)

但是,我收到了JS错误.我也试过这个:

$description = rawurlencode ( $product->description );
Run Code Online (Sandbox Code Playgroud)

这样编码的值如下:

Michael%20Kors%0A%0ATromp%20L%27oeil%20Sheath%20Dress%0A%0AYou%20will%20certainly%20%22trick%20the%20ey%22%20of%20many%20in%20this%20gorgeous%20illusion.%20Add%20it%20to%20your%20fall%20wardrobe%20before%20it%20disappears.%0A%0AAvailable%20in%20Black%2FNude
Run Code Online (Sandbox Code Playgroud)

这个值可以作为JS变量传递,但我不知道JS函数会干净地反转PHP rawurlencode.

是否有一对匹配的函数可用于在PHP中对变量进行编码以允许将其传递给JS函数 - 然后在JS中反转编码以便获取PHP变量的原始值?

编辑:澄清问题并回复评论,这里有一些测试代码:

<?php
$str =<<<EOT
Tromp L'oeil Sheath Dress

You will certainly "trick the eye" of many in this gorgeous illusion. Add it to your fall wardrobe before it disappears.
EOT; …
Run Code Online (Sandbox Code Playgroud)

php

7
推荐指数
1
解决办法
5621
查看次数

如何排序像黑客新闻

我正在尝试编写一个插件来bbPress(开源论坛软件),它的工作方式类似于Hacker News(http://news.ycombinator.com/).

具体来说,我想使用以下算法对论坛 - 线程(bbPress称之为"主题")的顺序进行排序:

sort_value = (p - 1) / (t + 2)^1.5
where p = total votes for each topic from users
t = time since submission of each topic in hours
Run Code Online (Sandbox Code Playgroud)

我希望能够使用MySQL通过这个计算的sort_value对主题进行排序.

topics表中的相关字段如下所示:

topic_id            bigint(20)
topic_start_time    datetime
Run Code Online (Sandbox Code Playgroud)

这是悬而未决,但我认为将有另一个表存储用户的个人投票,因此我们将能够知道用户是否已经投票.另一个表格将存储每个主题的当前投票总数.也许该表中会有另一个字段存储最新计算的sort_Value?

为了100%准确,每次新投票后都应更新sort_value .但是,这会给数据库服务器增加太多负载,特别是如果我们尝试更新所有主题.如果必须,我们可以通过仅计算最后X#个主题的sort_value来限制数据集.我们还可以通过仅定期更新sort_value来限制负载(例如,通过cron作业每5分钟更新一次).

这些快捷方式可能会使负载可以接受,但我更喜欢更优雅的解决方案.

你会如何构建这个?:-)

mysql database database-design

6
推荐指数
1
解决办法
750
查看次数

为 php7 升级替换 @mysql_fetch_array

我正在尝试迁移 Wordpress 站点。我的新主机使用 PHP7,并且有一个插件调用 @mysql_fetch_array,这是一个已从 PHP7 中删除的函数。

这是其控制循环内的函数调用:

while( $row = @mysql_fetch_array( $result) ) {
    $newSlider = array();
    $newSlider['name'] = $row['title'];
    $newSlider['value'] = $row['alias'];
    $toReturn[] = $newSlider;
}
Run Code Online (Sandbox Code Playgroud)

我做了 $result 对象的 print_r,结果如下:

mysqli_result Object
(
    [current_field] => 0
    [field_count] => 2
    [lengths] => 
    [num_rows] => 2
    [type] => 0
)
Run Code Online (Sandbox Code Playgroud)

是否有适用于 PHP7 的 @mysql_fetch_array 替换功能?

php php-7

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

php ×3

mysql ×2

arrays ×1

database ×1

database-design ×1

object ×1

php-7 ×1

sql ×1