我有一个键值数据库表,我存储了一些设置.
我想在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']
)更快更漂亮
有什么理由不可能吗?
我有一张桌子products
并job_statuses
使用这个包:laravel-job-status
队列作业完成后,有一个job_statuses
名为status
package 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)
如果状态已完成,如何刷新产品组件?
我正在尝试将项目从github导入intellij并且正在运行此堆栈跟踪:
引起:
java.io.IOException:无法运行程序"git":error = 2,没有这样的文件或目录在common_c6b3s0xd8gl4x9r47zsnga1nq $ _run_closure12.doCall(/Users/jrengh/Documents/teri/common.gradle:97)
我已经看到这个问题在互联网上发布很多,常见的解决方案似乎是确保git可执行文件正确地列在设置>版本控制> Git下的"路径到git可执行文件"字段中.我已经这样做了,测试了连接并获得了成功的消息.
问题源于此任务方法在位于我的项目依赖项之一的单独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".有没有人有任何有用的建议?
目前我在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) 我正在尝试使用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)
为什么不从阵列中设置“香蕉”?
我知道有很多这样的问题,但我没有找到任何解决方案.
我试过的事情: -
检查防火墙
重新启动我的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在这里运行是证明
我有一个对象数组,并且想要更新其中一个对象的属性。
$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() …
正如http://php.net/manual/en/language.types.array.php中提到的
注意:从 PHP 7.1.0 开始,对字符串应用空索引运算符会引发致命错误。以前,字符串被默默地转换为数组。
有人可以举个例子告诉我这是什么意思吗?
它将如何影响我的代码?
谢谢!
在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()
- 它也可以正常工作。
我在 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 字符串,但它没有帮助我。