我有以下数组:
$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)
我该如何实现?
我有一些第三方代码,它创建一个闭包,然后将其绑定到一个对象。闭包对象上的 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 来访问所有已注册的钩子,但现在我需要一种方法来唯一标识我想要取消钩子的闭包,如果有一种方法可以访问闭包的绑定对象,这可能是一项简单的任务。
有没有办法使用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) 我有一段简单的代码,但没有像我预期的那样工作,有人可以解释一下为什么它没有填充字段数组以及如何解决它。
$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代码清除用户缓存并从浏览器访问它:
<?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 中有一个数组,我正在循环访问它以获取内容。
当回显时,我的数组变量的结果$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 数据元素?
如果可用,我希望能够使用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。但是,将来,如果不是控制器的对象需要数据库连接怎么办?我们可以使用水平重用,而不是复制这个逻辑。
可以创建一个简单的特征:
Run Code Online (Sandbox Code Playgroud)trait DatabaseAware { protected $db; public function setDatabase($db) { $this->db = $db; } …
我有一个正在使用的项目composer。
但是,我丢失了我的composer.json.
有没有办法composer.json从vendor目录的内容重新创建?
我第一次尝试对我的项目使用单元测试,但是我被一个断言模型正确存储的测试阻止了。
这是我要测试的 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) 我创建了一个返回某一行的方法,没有任何错误,或者只是方法没有从数据库返回任何数据.
这是我调用方法的地方:
<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)
如何调整方法以使其返回所需数据?