小编Qir*_*rel的帖子

为什么PHP不能有一个常量对象?

我有一个键值数据库表,我存储了一些设置.

我想在PHP常量对象中使用这些设置,因为它们不应该是可编辑的.

在PHP7中,我们现在可以这样做:

define('MySettings', array(
    'title' => 'My title'
    // etc
));

// And call it with
echo MySettings['title'];
Run Code Online (Sandbox Code Playgroud)

而且效果很好.

但为什么我不能这样做:

define('MySettings', (object) array('title' => 'My title'));
Run Code Online (Sandbox Code Playgroud)

所以我可以这样称呼它:

echo MySettings->title;
// or
echo MySettings::title;
Run Code Online (Sandbox Code Playgroud)

这只是因为我认为将它作为对象属性/常量($obj->key,$obj::key)键入比作为数组($array['key'])更快更漂亮

有什么理由不可能吗?

php constants object

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

队列作业完成后如何刷新组件?

我有一张桌子productsjob_statuses使用这个包:laravel-job-status

队列作业完成后,有一个job_statuses名为statuspackage made this column 的列finished

所以我在products表中创建了一个名为job_status_id(relation with job_statuses)的列,只是为了将作业状态 ID 保存在产品表中,以查看此作业是否完成!

简单地,我创建了一个组件,Livewire用于在作业完成后刷新组件时刷新单个产品:

class ProductIndex extends Component
{
    public $product;


    public function mount($product)
    {
        $this->product = $product;
    }

    public function render()
    {
        return view('livewire.merchant.product.index');
    }
}
Run Code Online (Sandbox Code Playgroud)

内部product-index组件:

@if ($product->job_status->status == 'finished')
  // show real image? 
@else
  // show loader 
@endif
Run Code Online (Sandbox Code Playgroud)

我的刀片:

@foreach ($products as $product)
  <livewire:merchant.product.product-index :product="$product" :key="$product->id">
@endforeach
Run Code Online (Sandbox Code Playgroud)

如果状态已完成,如何刷新产品组件?

php laravel laravel-livewire

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

Intellij导入问题 - java.io.IOException:无法运行程序"git":error = 2,没有这样的文件或目录

我正在尝试将项目从github导入intellij并且正在运行此堆栈跟踪:

引起:

java.io.IOException:无法运行程序"git":error = 2,没有这样的文件或目录在common_c6b3s0xd8gl4x9r47zsnga1nq $ _run_closure12.doCall(/Users/jrengh/Documents/teri/common.gradle:97)

我已经看到这个问题在互联网上发布很多,常见的解决方案似乎是确保git可执行文件正确地列在设置>版本控制> Git下的"路径到git可执行文件"字段中.我已经这样做了,测试了连接并获得了成功的消息.

问题源于此任务方法在位于我的项目依赖项之一的单独gradle文件中调用:

common.gradle

task buildInfo {
    def cmd = "git rev-parse --short HEAD"
    def proc = cmd.execute()
    project.ext.revision = proc.text.trim()
    cmd = "git show -s --format=%ct HEAD"
    proc = cmd.execute()
    project.ext.timestamp = proc.text.trim()
}
Run Code Online (Sandbox Code Playgroud)

基本上,即使我已经成功上传了一个git可执行文件,intellij也不会识别我尝试在上面执行的命令中的"git".有没有人有任何有用的建议?

git intellij-idea gradle

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

FILTER_SANITIZE与FILTER VALIDATE,有什么不同 - 以及使用哪些?

目前我在PHP中使用表单作为输入方法制作类似计算器的应用程序.为了确保输入,我正在使用filter_input()功能.作为过滤器,此函数从两组中获取一个元素:FILTER_SANITIZE并且FILTER_VALIDATE,我应该使用哪一个来过滤来自表单的输入?

$number1 = trim(filter_input(INPUT_GET, 'number1', FILTER_VALIDATE_FLOAT));
Run Code Online (Sandbox Code Playgroud)

要么

$number1 = trim(filter_input(INPUT_GET, 'number1', FILTER_SANITIZE_FLOAT));
Run Code Online (Sandbox Code Playgroud)

php filter-input

8
推荐指数
1
解决办法
2583
查看次数

PHP:使用if语句从数组取消设置

我正在尝试使用if语句取消设置特定值。我的代码是

$fruits = ['apple', 'orange', 'melon', 'banana', 'pineapple'];

for ($i = 0 ; $i < count($fruits); $i++){ 
    if ($fruits[$i] == 'apple' || $fruits[$i] == 'orange' || $fruits[$i] == 'melon' || $fruits[$i] == 'banana'){
        unset($fruits[$i]);
    }
 }
 print_r($fruits);
Run Code Online (Sandbox Code Playgroud)

我希望它能回来

Array
(
  [4] => pineapple
)
Run Code Online (Sandbox Code Playgroud)

但是结果是

Array
(
  [3] => banana
  [4] => pineapple
)
Run Code Online (Sandbox Code Playgroud)

为什么不从阵列中设置“香蕉”?

php arrays unset

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

mysqli_connect():( HY000/2002):无法建立连接,因为目标计算机主动拒绝它

我知道有很多这样的问题,但我没有找到任何解决方案.

我试过的事情: -

  • 检查防火墙

  • 重新启动我的PC和Apache服务器

  • 重启MYSQL

  • 检查了我的代码

  • 尝试了我所知道并在互联网上找到的一切

这是我的代码: -

<?php

$dbhost = 'localhost:3360';
$dbuser = 'root';
$dbpass = '';
$db     = 'test_db13';


$conn  = mysqli_connect($dbhost,$dbuser,'',$db);

if(! $conn){
  die('Could not connect connect: ') ;
}

echo 'Successfully Connected';


$sql = 'Connected Successfully';
  $retvalue = mysqli_query($sql);

  if(! $retvalue){
    die('Cannot connect to SQL: ');
  }

echo 'DataBase test_db13 has successfully created';

mysqli_close($conn);

 ?>
Run Code Online (Sandbox Code Playgroud)

我确实设置了密码,但它仍然显示错误.

这是防火墙图片: - 在此输入图像描述

最后XAMMP在这里运行是证明

在此输入图像描述

php xampp mysqli

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

PHP - 在对象数组中按键查找对象,更新其值

我有一个对象数组,并且想要更新其中一个对象的属性。

$objs = [ 
    ['value' => 2, 'key' => 'a'], 
    ['value' => 3, 'key' => 'b'] ,
];
Run Code Online (Sandbox Code Playgroud)

假设我想将 'key'=>'a' 的对象的 'value' 设置为 5。

除了迭代数组搜索键之外,还有其他更快/更有效的方法吗?

谢谢。

编辑:关于为什么我不能使用关联数组存在争议。这是因为这个数组是从 JSON 值获取的。

如果我的 JSON 对象是这样的:

"obj": {
    "a": {
        "key": "a", 
        "value": 2
    }, 
    "b": {
        "key": "b", 
        "value": 3
    }
}
Run Code Online (Sandbox Code Playgroud)

无法保证保留对象的顺序,而这是必需的。

因此,我需要在每个对象中都有一个索引,以便能够使用 对其进行排序usort()。所以我的 JSON 需要是:

"obj": {
    "a": {
        "key": "a", 
        "value": 2, 
        "index": 1
    }, 
    "b": {
        "key": "b", 
        "value": 3, 
        "index": 2
    }
}
Run Code Online (Sandbox Code Playgroud)

但我不能usort() …

php object

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

Php 7.1 - 空索引运算符数组

正如http://php.net/manual/en/language.types.array.php中提到的

注意:从 PHP 7.1.0 开始,对字符串应用空索引运算符会引发致命错误。以前,字符串被默默地转换为数组。

有人可以举个例子告诉我这是什么意思吗?

它将如何影响我的代码?

谢谢!

php arrays string error-handling

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

Livewire 将集合转化为数组

mount()livewire 组件的功能中,我有一个集合,如下所示:

$this->products = $purchase->getProductsList();
Run Code Online (Sandbox Code Playgroud)

getProductsList()是购买模型的函数:

public function getProductsList() : Collection
{
    $products = $this->purchaseSkus->pluck('sku.product')->unique();
    return $products;
}
Run Code Online (Sandbox Code Playgroud)

每当渲染组件的刀片时 - 它工作正常

在此输入图像描述

但在同一个刀片中,我有一个带有组件wire:model="description"功能的文本区域updatedDescription()。在文本区域进行更改后$products变成数组

在此输入图像描述

我该如何预防?

PS:如果我投入$this->products使用render()- 它也可以正常工作。

laravel-livewire laravel-8

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

PHP中的异或两个字符?

我在 php 阅读 xor ,我看到了这个例子:

$aa = "A" ^ "}"; 
echo $aa; // <
Run Code Online (Sandbox Code Playgroud)

所以我在互联网上搜索它是如何工作的,他们说它的总和是 ascii 代码,但上面的代码不是总和。

A = 65
} = 125 

65 + 125 = 190
Run Code Online (Sandbox Code Playgroud)

我试图在另一个字符之间求和

$aa = "A" ^ "&";
echo $aa;
Run Code Online (Sandbox Code Playgroud)

但结果是 130 = g

那么超过 97 的任何字符都不是总和吗?

我也检查了这个问题 PHP XOR 字符串,但它没有帮助我。

php bitwise-operators bitwise-xor

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