小编loc*_*inz的帖子

如何按出现值的数量对数组排序?

我有以下数组:

$name_arr = array('raj','raj','ganesh','rahul','ganesh','mayur','raj','rahul');
Run Code Online (Sandbox Code Playgroud)

我想这样排序:

$final_arr = array('raj','raj','raj','ganesh','ganesh','rahul','rahul','mayur');
Run Code Online (Sandbox Code Playgroud)

我该如何实现?

php arrays sorting

4
推荐指数
1
解决办法
1391
查看次数

如何找出闭包绑定到的对象的类名?

我有一些第三方代码,它创建一个闭包,然后将其绑定到一个对象。闭包对象上的 print_r 会产生以下结果:

Closure Object ( [this] => am4Widgets Object ( ) )
Run Code Online (Sandbox Code Playgroud)

现在我需要检索绑定对象的“instanceof”(在本例中为“am4Widgets”),某种伪代码,例如

print_r(myClosureObject instanceofboundobject am4Widgets);
Run Code Online (Sandbox Code Playgroud)

应该输出“TRUE”。

我搜索了 php.net 但没有结果。

预先感谢您的任何想法/建议。

更新:

这是创建闭包的位置(我无法修改的代码片段):

function initActions()
{
    parent::initActions();
    .
    .
    .
    add_action('wp_head', function(){
        $ajax_url =  admin_url( 'admin-ajax.php' );
        echo <<<CUT
<script>...some javascript code...</script>
CUT;
    });
}
Run Code Online (Sandbox Code Playgroud)

实际上,我想做的是从 wp_head 中取消闭包,因为我需要它在页脚中。

我正在使用全局 wordpress 的 $wp_filters 来访问所有已注册的钩子,但现在我需要一种方法来唯一标识我想要取消钩子的闭包,如果有一种方法可以访问闭包的绑定对象,这可能是一项简单的任务。

php oop closures classname

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

使用无脂肪框架进行单元测试

有没有办法使用PHPUnit我有一个indexTest.php的测试文件夹里面测试我的index.php文件中的路由?

无脂指南提供了用于模拟路由请求和POSTS的代码片段.如果我直接在我的测试文件中使用其中的任何功能生成路由,我只能设法得到这样的测试.

我想要的是模拟带有令牌的路由,允许它从index.php中的路由和控制器运行,并测试应该通过运行路由设置的f3变量.

<?php

class indexTest extends \PHPUnit_Framework_TestCase
{
    public function test()
    {
        $f3 = Base::instance();
// Don't write to STDOUT
        $f3->set('QUIET', true);
        $f3->route('GET /path', function(){ echo 'TEXT'; });

        $this->assertNull($f3->mock('GET /path'));
        $this->assertSame('TEXT', $f3->get('RESPONSE'));

        $f3->route('GET /verify/@answer/@value',
            function($f3, $params){
                $errors = array();

                $answer = $params['answer'];
                $value = $params['value'];

                $prefix = substr($answer, 0, 3);  //pre, ans, pos
                $id = (int)substr($answer, 3);      //question id number (1, 2, 3, 4)
//$value is the input value from user

                $result = check_id($prefix, $id, $value);

                if($result !== true){ …
Run Code Online (Sandbox Code Playgroud)

phpunit fat-free-framework

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

array_walk 尝试写入外部数组

我有一段简单的代码,但没有像我预期的那样工作,有人可以解释一下为什么它没有填充字段数组以及如何解决它。

$fields = [];

array_walk($class->properties, function($v, $k) use ($fields) {
    $fields[] = $v->name;
});

die(var_dump($fields));

// output is []
Run Code Online (Sandbox Code Playgroud)

php array-walk

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

如何在APCu中清除用户缓存?

我试图使用此PHP代码清除用户缓存并从浏览器访问它:

<?php

apc_clear_cache();
apc_clear_cache('user');
apc_clear_cache('opcode');

echo json_encode(array(
    'success' => true,
));
Run Code Online (Sandbox Code Playgroud)

但它不起作用.(我正在使用这些工具来查看它是否正常工作https://rtcamp.com/tutorials/php/zend-opcache/)

此外,当用户缓存已满时,它不会从0重新启动.APCu只是停止工作.

我试图设置apc.user_ttl=0,但APCu不承认它.

我的设置是:

extension=apcu.so
apc.enabled=1
apc.shm_size=10240M
apc.ttl=7200
apc.enable_cli=1
apc.gc_ttl=3600
apc.entries_hint=4096
apc.slam_defense=0
apc.enable_cli = 1
apc.user_ttl=0
apc.serializer=igbinary
Run Code Online (Sandbox Code Playgroud)

php caching apc opcache

2
推荐指数
2
解决办法
7205
查看次数

输出数组,因此可以用作数据属性的值

我在 PHP 中有一个数组,我正在循环访问它以获取内容。

当回显时,我的数组变量的结果$myArray如下所示

Array(
  [0] => ABC
  [1] => DEF
  [2] => GHI
  [3] => JKL
     )
Array(
  [0] => MNO
  [1] => 123A
  [2] => 123B
  [3] => 123C
     )
Array(
  [0] => orange
  [1] => yellow
  [2] => green
  [3] => blue
     )
Run Code Online (Sandbox Code Playgroud)

但是当我使用它传递给 html 数据元素时

data-results = "$myArray"
Run Code Online (Sandbox Code Playgroud)

我得到一个

Notice: Array to string conversion 
Run Code Online (Sandbox Code Playgroud)

错误。

如何将其作为一个数组传递给 html 数据元素?

php arrays json

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

如果存在,如何有条件地使类使用特征?

如果可用,我希望能够使用use该特性。

显然我不能在类本身内部定义它(语法错误)

//fails
include_once('myTrait.php');

class foo
{ 
    var $bar; 

    if (trait_exists('myTrait')) {
        use myTrait;
    }
}

//also fails
foo use myTrait;

//also fails
$f = new foo();
$f use myTrait;

//also fails
$f = new foo() use myTrait;
Run Code Online (Sandbox Code Playgroud)

理想的情况是这样的:

class foo
{
    var $bar;
}

if (file_exists('myTrait.php')) {
   include_once('myTrait.php');
   //make class foo use myTrait;
}

$f=new foo();
Run Code Online (Sandbox Code Playgroud)

很难找到文档和特征似乎不是很受欢迎,但在我的特殊情况下,它们非常有用。我还尝试通过仅在需要时包含文件来尽可能降低资源。

像往常一样欢迎提示、文档和解释。


我的搜索带给我的最接近的是这篇文章http://brendan-bates.com/traits-the-right-way/

假设其中一些控制器(但不是全部)需要数据库连接。为了保持性能,我们不应该为每个控制器提供数据库连接。我们可以做的是编写一个抽象类,它扩展了提供数据库连接的 BaseController。但是,将来,如果不是控制器的对象需要数据库连接怎么办?我们可以使用水平重用,而不是复制这个逻辑。

可以创建一个简单的特征:

trait DatabaseAware 
{    
    protected $db;

    public function setDatabase($db) 
    {
        $this->db = $db;
    } …
Run Code Online (Sandbox Code Playgroud)

php traits

2
推荐指数
2
解决办法
3018
查看次数

如何从供应商目录的内容重新创建 composer.json?

我有一个正在使用的项目composer

但是,我丢失了我的composer.json.

有没有办法composer.jsonvendor目录的内容重新创建?

composer-php

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

如何断言由两个 JSON 字符串表示的数据相等?

我第一次尝试对我的项目使用单元测试,但是我被一个断言模型正确存储的测试阻止了。

这是我要测试的 API 控制器:

public function store(QuestionFormRequest $request)
{
    $questionRequest = $request->question();

    $question = new Question($questionRequest);
    $question->save();

    $question->answers()->createMany($questionRequest['answers']);

    return response()->json($question->load('answers'), 201);
}
Run Code Online (Sandbox Code Playgroud)

这是我的测试:

public function it_can_store_a_question()
{
    $surveyFactory = factory(Survey::class)->create();
    $themeFactory = factory(Theme::class)->create();
    $pillarFactory = factory(Pillar::class)->create();

    $questionToStore = [
        'survey_id' => $surveyFactory->id,
        'theme_id' => $themeFactory->id,
        'pillar_id' => $pillarFactory->id,
        'name' => 'question',
        'type' => 'simple',
        'answers' => [
            [
                'label' => 'reponse1',
                'points' => '3',
            ],
            [
                'label' => 'reponse2',
                'points' => '5',
            ]
        ]
    ];

    $response = $this->post('/api/1.0/question', $questionToStore);
    $response->assertStatus(201); …
Run Code Online (Sandbox Code Playgroud)

phpunit json unit-testing laravel

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

方法不返回任何东西

我创建了一个返回某一行的方法,没有任何错误,或者只是方法没有从数据库返回任何数据.

这是我调用方法的地方:

<a class="navbar-brand" href="http://localhost/old marketplace website/">
    <?php echo $controller->getTableData($table, $column, $columnValue, $rowTitle); ?>
</a>
Run Code Online (Sandbox Code Playgroud)

这是方法的getTableData()样子:

public function getTableData($table, $column, $columnValue, $rowTitle)
{
    $query = $this->db->prepare("SELECT * FROM $table WHERE $column = ? ");

    $query->bindValue(1,$columnValue);    
    $query->execute();

    $f = $query->fetch(PDO::FETCH_ASSOC);

    $result = $f['$rowTitle'];

    return $result;
}
Run Code Online (Sandbox Code Playgroud)

如何调整方法以使其返回所需数据?

php mysql oop pdo

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