printf() 字符串中的名称 PHP 说明符
PHP 中有没有一种方法可以像 Python 一样命名我的说明符?
我想在 PHP 中使用这个:
$foo = array('name' => 24);
printf("%(name)d", $foo);
我在 google 或 php 手册中找不到任何相关内容。
Is there a way in PHP to name my specifiers like in Python?
I want this in PHP:
$foo = array('name' => 24);
printf("%(name)d", $foo);
I couldn't find nothing related on google or in the php manual.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
好问题!
通过使用正则表达式,您可以轻松地推出自己的产品。我的实现基于调用
vsprintf
,这是内置printf
系列函数中最接近既定目标的函数:测试:
更新: 我最初的实现非常适合 lambda。事实证明,一个超级基本的
foreach
就足够了,这也使得该函数可以在 PHP >= 4.1 中使用(不能 100% 确定特定版本,但应该在那里)。查看实际操作。
Nice question!
You can roll your own without too much trouble by working with regexes. I based the implementation on the idea of calling
vsprintf
, which is closest to the stated goal among the built-inprintf
family of functions:To test:
Update: My initial implementation was very lambda-happy. Turns out a super basic
foreach
will suffice, which also makes the function usable in PHP >= 4.1 (not 100% sure about the specific version, but should be around there).See it in action.
使用
strtr
:您也可以这样做:
或者这样:
Use
strtr
:You could also do this:
Or this:
您可以使用
sprintf
通过对参数进行编号来完成此操作,如下所示:输出以下字符串:
You can do it with
sprintf
by numbering the parameters, like so:Outputs the following string:
更接近的核心函数是
vsprintf()
使用数组而不是多个参数,但您仍然必须使用编号参数。在此函数文档的注释中,有人创建了一个函数来执行您想要的操作 vnsprintf() printf+数组+命名参数
the closer core function is
vsprintf()
to use an array instead of multiple parameter, but you still have to use numbered parameters.in the comments of this function docs there is someone who created a function to do what you want vnsprintf() printf+array+named parameters