就像在主题中一样,我想将局部变量重构为类字段。
我正在考虑两种方法:
A. 快速而简单:
我想将变量名称从 重构$var为$this->var。
B、扩展版:
从:
class x {
function y() {
$var = new targetClass;
}
}
Run Code Online (Sandbox Code Playgroud)
到:
class x {
/** @var targetClass $var */ // version C, optional
(public|protected|private) $var;
function y() {
$this->var = new targetClass;
}
}
Run Code Online (Sandbox Code Playgroud)
无法做到这一点,当我尝试重构时$var,只需将其重构为$this->var,我最终会收到一条消息:
插入的标识符无效
首先定义$this->var也没有帮助。
我发现的唯一解决方法是输入$this->var,放松对重构变量的关注,输入任何内容并将其删除。然后PhpStorm被欺骗并且变量被改变。它是简单的脏覆盖方法A。
我正在尝试创建一个具有两个属性的数组并遍历它。但是我不知道该怎么做。
在此示例中,具有一个属性:
$foodArray = ["apple", "banana"];
foreach ($foodArray as $food) {
echo $food ."<br />";
}
Run Code Online (Sandbox Code Playgroud)
现在,我想添加数组-绿色到苹果,黄色到香蕉,并以相同的方式循环。如何以最佳方式做到这一点?
再会!
我在使用preg_replace和 utf-8 字符时遇到了一些麻烦。以下代码片段:
$v = "line1\nline2\r\n?? ?????? ?? ?????????????";
print $v;
print preg_replace("#\R#", "", $v);
print preg_replace("\n", "", $v);
Run Code Online (Sandbox Code Playgroud)
返回以下输出:
line1
line2
?? ?????? ?? ?????????????
line1line2?? ?????? ?? ?????????????
line1line2
?? ?????? ?? ????????????? ???
Run Code Online (Sandbox Code Playgroud)
出于某种原因?\R使用时不可读,但\n使用时不受影响。由于\R特定于 PHP,我想这会产生问题。有没有人知道我如何在 中使用\R(不被 接受str_replace)preg_replace?我担心这个问题可能会发生在许多其他情况下,不仅仅是资本。
假设我需要使用从 PDO 准备好的语句中得到的结果循环两次。
第一个循环工作正常,下一个循环不起作用
的值为var_dump(q->fetch())空数组。有任何想法吗?
<?php
$q = $dbconnection->prepare("SELECT * from users WHERE role=?");
$q->execute(array('$id')); //Boolean true or false
// first loop
while ($row = $q->fetch(PDO::FETCH_ASSOC)) {
echo "<br/>" . $row['user_id'] . "--". $row['fname']. "</br>";
}
// second loop this loop will NOT echo any thing ?!
while ($row = $q->fetch(PDO::FETCH_ASSOC)) {
echo "<br/>" . $row['user_id'] . "--". $row['fname']. "</br>";
}
Run Code Online (Sandbox Code Playgroud) 2017-02-10 00:00:00
Run Code Online (Sandbox Code Playgroud)
我有一个日期数组
$date_array=array
(
[0] => 2015-09-01 12:00:00
[1] => 2015-12-01 12:00:00
[2] => 2016-03-01 12:00:00
[3] => 2016-06-01 12:00:00
[4] => 2016-09-01 12:00:00
[5] => 2016-12-01 12:00:00
[6] => 2017-03-01 12:00:00
[7] => 2017-06-01 12:00:00
[8] => 2017-09-01 12:00:00
[9] => 2017-12-01 12:00:00
[10] => 2018-03-01 12:00:00
[11] => 2018-06-01 12:00:00
[12] => 2018-09-01 12:00:00
[13] => 2018-12-01 12:00:00
[14] => 2019-03-01 12:00:00
[15] => 2019-06-01 12:00:00
[16] => 2019-09-01 12:00:00
[17] => 2019-12-01 12:00:00
[18] => 2020-03-01 …Run Code Online (Sandbox Code Playgroud) <select>
<option>A</option>
<option>B</option>
<option>C</option>
//... and so on - till Z
</select>
Run Code Online (Sandbox Code Playgroud)
有没有更短的方法,例如:
$arr = alphabet;
foreach($arr as $el){
echo "<option>" . $el . "</option>";
}
Run Code Online (Sandbox Code Playgroud)
所以,我需要避免这样写:
$arr = array('A','B','C','D'... );
Run Code Online (Sandbox Code Playgroud) 处理 PHP/MySQL 重复条目错误的正确方法是什么?
即使代码 1062 是重复条目的正确代码,下面的代码也不起作用。我应该在这里使用 DBO 吗?不幸的是我还不熟悉。
<?php
try {
mysql_query('INSERT INTO TP2_ORGANISME VALUES (A0A0, Equiterre, 1,
/photos/equiterre_logo.png, Steve Guilbault, steve@equiterre.org');
} catch {
if (mysql_errno() == 1062)
echo 'Duplicate key entry';
}
?>
Run Code Online (Sandbox Code Playgroud)
我只是在寻找一个简单的 try catch 或任何可以让我向输入重复项的用户打印一条消息,说明他必须为主键输入另一个值。
谢谢
怎样才能实现这个查询?
Sale::with(['catalog'])
->whereIn('id', $ids)
->update(['price' => DB::raw('catalog.price')]);
Run Code Online (Sandbox Code Playgroud)
这不起作用,它显示未定义的表......我试图输入表的名称,但它是相同的。
在互联网上,我总能找到简单的查询:
Sale::with(['catalog'])
->whereIn('id', $ids)
->update(['price' => 5]);
Run Code Online (Sandbox Code Playgroud)
好的!当我想用相同的值更新所有行时很容易,另外当你想用同一个表的列更新时也很容易,比如:
Sale::with(['catalog'])
->whereIn('id', $ids)
->update(['price' => DB::raw('price_alternative')]);
Run Code Online (Sandbox Code Playgroud)
但是如何使用具有关系的另一个表的列呢?我还没有找到解决方案。
我知道这可以使用整个原始查询来解决,但我想知道是否可以通过雄辩的方式来实现
我有一个函数可以根据输入的值返回响应。代码是这样的
$a = 5;
switch ($a) {
case 1: $b = 1;
break;
case 2 || 3 || 4: $b = 2;
break;
case 5: $b = 3;
break;
}
return $b;
Run Code Online (Sandbox Code Playgroud)
这将返回值2而不是3在代码中可以清楚地看到的值。这是怎么发生的?