草庐IT

conversion-operator

全部标签

PHP 和 ??运算符(operator)

有些人知道,C#有非常有用的??运算符,如果左边的表达式为空,它会计算并返回右边的表达式。它对于提供默认值非常有用,例如:intspaces=readSetting("spaces")??5;如果readSetting找不到"spaces"并返回null,变量spaces将保持默认值5.您可以使用||运算符在JavaScript和Ruby中执行几乎相同的操作,如varspaces=readSetting("spaces")||5;尽管在这种情况下,在JavaScript中您不能将0作为spaces的值,而在Ruby和JavaScript中都不能将false作为值。PHP有or运算符,虽

php - 为包装类操作 PHP-instanceof-operator

我想要一些类的通用包装类来拦截和操作一些方法调用。方法-调用-转发,拦截,目前没问题。但是想了想,我发现了一个我无法解决的问题:我在我的应用程序中到处都在使用内置的instanceof-operator。当然这不再有效,因为包装器不是其中类的实例。我想继续使用运算符而不是用其他函数替换它。有没有办法解决这个问题?这个运算符是如何工作的?它是否调用我可能能够在我的包装器中覆盖的类的核心函数?我知道这不是一个真正“干净”的操作这个运算符的解决方案,但我认为这对我来说是最简单的解决方案。正如我们所知,PHP中有很多东西不是那么干净...:-)谢谢你的回答,本 最佳

php - "&&"和 "and": Operator precedence and short circuiting 之间的区别

我正在浏览php.net的运算符优先级部分并遇到了thisexample这说$a=1;$b=null;$c=isset($a)&&isset($b);$d=(isset($a)andisset($b));$e=isset($a)andisset($b);var_dump($a,$b,$c,$d,$e);//Result:int(1)NULLbool(false)bool(false)我在我的代码中使用了很多调试和冗长的print(_r)语句来跟踪我在代码中的位置。所以我使用$debugandprint_r($dataArray)或$verbose并打印“UpdatingdataArra

c# - '正则表达式' VS 'String Comparison operators/functions'

这个问题是围绕PHP的性能设计的,但如果您愿意,您可以将其扩展到任何语言。在使用PHP多年并不得不比较字符串之后,我了解到在性能方面,在正则表达式上使用字符串比较运算符是有益的。我完全理解,有些操作必须使用正则表达式来完成,直到非常复杂,但对于可以通过正则表达式和字符串函数解决的操作。举个例子:PHPpreg_match('/^[a-z]*$/','thisisallalpha');C#newRegex("^[a-z]*$").IsMatch('thisisallalpha');可以轻松完成PHPctype_alpha('thisisallalpha');C#VFPToolkit.St

php - Laravel 在将数组存储到 Json 数据库字段时获得 "Array to string conversion"

我正在尝试将带有选项的数组保存到我的postgres数据库的json数据字段中。我正在使用Laravel5.5并使用扩展名“dimsav/laravel-translatable”进行翻译。我的模型问题是这样的:命名空间应用;useIlluminate\Database\Eloquent\Model;useDimsav\Translatable\Translatable;classQuestionextendsModel{useTranslatable;public$translatedAttributes=['options','answer'];protected$casts=['

php - ??的正确用法运算符(operator)

在我的项目中,我有一个处理所有AJAXPOST请求的ajax.php。它获取命令,验证所有必需的参数是否存在并将其传递给相关类。我看到了新的'??'运算符并开始像这样验证POST参数,$name=$_POST['name']??die('{"result":0,"data":"namenotprovided"}');$state=$_POST['state']??die('{"result":0,"data":"statenotprovided"}');我觉得比那个好看$name=isset($_POST['blah'])?$_POST['blah']:die('{"result":0

php - 警告 : stream_socket_enable_crypto(): SSL operation failed with code 1

我在使用CSCart时遇到问题,无法通过google帐户发送邮件。为了检查服务器配置或CSCart脚本中是否存在问题,我安装了干净的库PHPMailer并尝试使用示例脚本发送测试消息。结果是一样的:Warning:stream_socket_enable_crypto():SSLoperationfailedwithcode1.OpenSSLErrormessages:error:14090086:SSLroutines:SSL3_GET_SERVER_CERTIFICATE:certificateverifyfailedin[scriptpath]/class.smtp.phponl

PHP 通知 : Array to string conversion only on PHP 7

我是PHP新手。我是从php.net研究的,今天发现了一个问题。classfoo{var$bar='Iambar.';}$foo=newfoo();$bar='bar';$baz=array('foo','bar','baz','quux');echo"{$foo->$bar}\n";echo"{$foo->$baz[1]}\n";文档(http://php.net/manual/en/language.types.string.php)说上面的例子会输出:Iambar.Iambar.但是我在我的PC上运行了不同的输出(PHP7):Iambar.Notice:Arraytostring

php - PHP : file operation scope, 参数传输和限制执行访问中的异步操作

我有一个php脚本,它可以将数据发送到另一个脚本并对其进行异步处理(至少我希望同样如此)。这是called.php的代码include_once("../caller.php");chdir(__DIR__);fclose(STDOUT);//THISfclose(STDIN);//THISfclose(STDERR);//THISfunctiongiveCake($arg1,$arg2){global$mysqli;$sleep=15;//scripthastosleep(...)codeamongstsleep(...)sleep($sleep);$_SESSION;//would

php - 错误 : [] operator not supported for strings

这个问题在这里已经有了答案:Fatalerror:[]operatornotsupportedforstrings(9个回答)关闭去年。我正在尝试使用以下语法创建多维数组:$x[1]='parent';$x[1][]='child';我收到错误:[]operatornotsupportedforstrings因为它正在评估$x[1]作为字符串而不是返回数组所以我可以附加到它。这样做的正确语法是什么?总体目标是在将元素附加到已知索引的迭代中创建此多维数组。语法${$x[1]}[]也不起作用。