小编vol*_*zta的帖子

确定调用函数的命名空间

我想知道在调用函数时是否可以确定当前命名空间是什么.我有这个函数声明:

<?php
namespace Site\Action;
function add ($hook, $function) {
    /**
     * determine the namespace this was called from because
     * __NAMESPACE__ is "site\action" :(
     */
     if (is_callable($function))
         call_user_func($function);
}
?>
Run Code Online (Sandbox Code Playgroud)

在另一个文件上:

<?php
namespace Foo;
function bar () {
}
?>
Run Code Online (Sandbox Code Playgroud)

让我们说我把它作为我的程序代码:

<?php
namespace Foo;
Site\Action\add('hookname', 'bar');
?>
Run Code Online (Sandbox Code Playgroud)

假设Bar在这种情况下打算解决,Foo\bar因为那是从它调用的命名空间.

这是一个很长的解释,是否有可能确定Site\Action\add()调用的活动命名空间?

提前致谢.

php oop namespaces

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

给定索引(PHP)在字符串中获取字符的最快方法

我知道有几种方法可以在给定索引的情况下从字符串中获取字符.

<?php
$string = 'abcd';
echo $string[2];
echo $string{2};
echo substr($string, 2, 1);
?>
Run Code Online (Sandbox Code Playgroud)

我不知道是否有更多的方法,如果您知道任何方式请不要犹豫,添加它.问题是,如果我选择并重复上述方法几百万次,可能使用mt_rand来获取索引值,哪种方法在最小内存消耗和最快速度方面最有效?

php string

5
推荐指数
1
解决办法
8816
查看次数

哈希交叉可能与redis + lua?

我有一个用例,我需要计算很多集之间的相似性来创建一个简单的推荐引擎.我正在研究Jaccard系数和其他相似系数公式,但有一点在它们之间很常见:集合中的项目不能重复(如果我在这里错了,请纠正我).

我在PHP中编写了自己的函数来执行自定义哈希交集,其逻辑是:

  1. arr1:一个数组,其中键是项的ID,值是它们对应的数量.这代表用户的愿望清单.
  2. arr2:是相同的,arr1但它代表另一个用户的库存.
  3. 我需要这个自定义交集的逻辑是,愿望清单的所有者不关心卖家是否有100个item1.如果他只想要4个,那么只计算4个.

我需要一种非常快速的方式来交集集合,但是通常的相似系数公式涉及集合的交叉和并集,当比较一组与200k其他集合时,这可能没有我想要的那么快.这是我到目前为止的地方:

function my_similarity_coefficient ($arr1, $arr2) {

    $matches = 0;
    $total = 0;

    if (count($arr2) == 0)
        return 0;

    foreach ($arr1 as $id => $qty) {

        $total += $qty;

        if (!array_key_exists($id, $arr2))
            continue;

        $matches += min($qty, $arr2[$id]); // do not match more than what user wants

    }

    return $matches / $total;

}
Run Code Online (Sandbox Code Playgroud)

我尝试在PHP中交叉两个带红色的哈希.在尺寸arr1[67]arr2[231]分别.系数在未完成的61.98μsec(最差时高达266.075μsec)下计算.如果我试图从Redis获取数据到PHP,这个数字可以达到905.037μsec-3337.86μsec.

我想保持瓶颈不会将数据从redis传输到PHP,所以我想知道是否可以在lua(或者甚至是c ++)中编写这个自定义交集,如果可能的话,它是否会受到同样的影响瓶颈,因为它也从pointA到pointB获取它,或者它不会受到获取瓶颈,因为数据已经是本地的?

我不熟悉lua,但我不打算用精确的代码填充勺子.由于互联网上的lua资源与我实际想要实现的内容相关很少,我想在我搜索时首先选择一些大脑.

lua redis lua-table

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

Mysql 在 INSERT 查询中截断了不正确的 DOUBLE 值

我知道这里有很多这样的错误,但这个查询似乎不同,因为它是一个插入查询。这是表 card_info 的架构:

CREATE TABLE card_info (
 card_id mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
 card_name_orig varchar(150) NOT NULL,
 card_name_html varchar(150) NOT NULL,
 card_name_search varchar(150) NOT NULL,
 card_name_page varchar(150) NOT NULL,
 card_cost varchar(50) DEFAULT NULL,
 card_cost_converted tinyint(2) NOT NULL DEFAULT '0',
 card_subtype varchar(75) DEFAULT NULL,
 card_oracle_text_orig text,
 card_oracle_text_html text,
 card_power varchar(10) DEFAULT NULL,
 card_toughness varchar(10) DEFAULT NULL,
 card_loyalty tinyint(1) DEFAULT NULL,
 PRIMARY KEY (card_id),
 KEY card_name_nd (card_name_search),
 KEY card_name_page (card_name_page),
 KEY card_cost_converted (card_cost_converted),
 KEY card_power (card_power),
 KEY card_toughness (card_toughness),
 KEY card_loyalty (card_loyalty), …
Run Code Online (Sandbox Code Playgroud)

mysql warnings insert mysql-error-1292

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

标签 统计

php ×2

insert ×1

lua ×1

lua-table ×1

mysql ×1

mysql-error-1292 ×1

namespaces ×1

oop ×1

redis ×1

string ×1

warnings ×1