我正在尝试使用PHP在股票交易游戏中回显一组按钮(买入和卖出).这些按钮最终会有一个onclick =事件处理程序,它调用一个JavaScript函数来填充表单上的某些字段,但我只是试图获得一个带有一个数据的alert().我无法从echo语句中获取结果以正确打印警报,因此它甚至不会触发.我还使用了print_r($ stockInfo)来确保我的数组正确地填充了测试数据.
这是我的数组:
$stockInfo = array(
array('name' => 'Company 1', 'description' => 'Description 1', 'price' => '100', 'yield' => '.05'),
array('name' => 'Company 2', 'description' => 'Description 2', 'price' => '89', 'yield' => '.06'),
array('name' => 'Company 3', 'description' => 'Description 3', 'price' => '110', 'yield' => '.03')
);
Run Code Online (Sandbox Code Playgroud)
我的PHP代码试图生成一个按钮:
<?php
echo <<<EOT
<button id="buy" class="btn btn-primary btn-small" onclick="alert('$stockInfo[0]["name"]');">Buy</button>
EOT;
?>
Run Code Online (Sandbox Code Playgroud)
该代码的结果是:
<button id="buy" class="btn btn-primary btn-small" onclick="alert('Array["name"]');">Buy</button>
Run Code Online (Sandbox Code Playgroud)
我只是想不通为什么我甚至无法得到一个简单的警报.运行:
echo $stockInfo[0]["name"];
Run Code Online (Sandbox Code Playgroud)
正确打印出"公司1",但它不会在alert()的参数中打印该文本.
我读过Stackoverflow,很多网页文章,并在过去的一天进行了实验,我无法弄清楚这一点.如果有人能提供任何帮助,我会非常感激.
谢谢!
我想知道是否:
$foo = <<< EOT
Hello, World!
EOT;
Run Code Online (Sandbox Code Playgroud)
和...一样有效
$foo = <<<EOT
Hello, World!
EOT;
Run Code Online (Sandbox Code Playgroud)
特别是在所有版本的PHP(或者只是最新的版本)中是否都适用.
我想知道因为我想知道<<<第一个EOT标识符之间的空格是否在语法上有效.例如,我的PHP解释器5.3.10正确运行,但是如果在<<<和之间有空格EOT(EOT标识符用白色而不是紫色标记),我的文本编辑器不会以相同的方式突出显示heredoc .
那么这里的交易是什么?在所有版本的PHP中是否合法?
可能重复:
带有eval代码执行的heredoc
所以我在function.php中有以下内容:
eval("\$content = <<<TEMPLATE\n
asdf
\nTEMPLATE;");
Run Code Online (Sandbox Code Playgroud)
我一直收到错误说:
Parse error: syntax error, unexpected $end, expecting T_VARIABLE or T_END_HEREDOC or T_DOLLAR_OPEN_CURLY_BRACES or T_CURLY_OPEN in /var/www/function.php(10) : eval()'d code on line 5
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚问题是什么.heredoc语法显然有一个结局,heredoc是不是喜欢和eval一起玩?
我在bash shell中执行带星号的MySQL语句:
query=`cat <<EndOfMySQL
INSERT tmp_table
SELECT * FROM table
;
EndOfMySQL
`
echo $query
echo $query | mysql database
Run Code Online (Sandbox Code Playgroud)
问题是星号被当前目录中的文件列表替换,并且查询变得错误。如何避免这种行为?我使用反引号还是都没关系$()。我希望有一些转义序列,例如\*,但至少这是行不通的。
我在heredoc输入字段中显示数组值时遇到问题.这是一段代码:
class Snippet{
protected $_user;
protected $_class;
protected $_messages;
public function __construct(){
$this->_user = $this->_class = NULL;
$this->createUser();
}
public function createUser(){
$keys = array('user_login','user_email');
$this->_user = $this->_class = array_fill_keys($keys, '');
}
public function userErrors(){
//by default give the login field autofocus
$_class['user_login'] = 'autofocus';
}
public function getForm(){
return <<<HTML
<form id='test' action='' method='post'>
$this->_messages
<fieldset>
<legend>Testing Heredoc</legend>
<ol>
<li>
<label for='user_login'>Username</label>
<input id='user_login' name='user_login' type='text' placeholder='Login name' value=$this->_user[user_login] $this->_class[user_login]>
</li>
</ol>
</fieldset>
</form>
HTML;
}
}
Run Code Online (Sandbox Code Playgroud)
我的输出产生一个带标签的输入框,其值显示为Array[user_login] …
我正在尝试将带有INSERT INTO MySQL命令的heredoc语法用于数据库.
我面临的问题是变量$tPerson_SQLinsert,这是一个查询.
这是我的代码:
$tPerson_SQLinsert = <<<SQL
INSERT INTO tPerson (Salutation, FirstName, LastName, Tel, companyID)
VALUES ("$Salutation", "$FirstName", "$LastName", "$Tel", "$companyID")
SQL;
Run Code Online (Sandbox Code Playgroud)
好吧,这个语法可能有问题.
因为我得到了这个Parse错误:
Parse error: syntax error, unexpected end of file in F:\wamp\www\forms\personInsert.php on line 83
Run Code Online (Sandbox Code Playgroud)
这只是php的结束标记?>.
heredoc的正确语法是什么?
谢谢.
<?php
$javascript = <<<EOT
<script type="text/javascript">
function test () {
return 'test test test \n test test test';
}
</script>
EOT;
echo $javascript;
?>
Run Code Online (Sandbox Code Playgroud)
上面的\n由PHP解析为换行符,生成如下的HTML源代码
return 'test test test
test test test';
Run Code Online (Sandbox Code Playgroud)
这会导致JavaScript语法错误:未终止的字符串文字.
我有很多JavaScript代码,所以我不想把它们包装起来
$javascript = "<script type=\"text/javascript\">\nfunction test()...\n";
Run Code Online (Sandbox Code Playgroud)
实际上JavaScript代码没有直接回显到页面,它被传递给另一个函数,这就是为什么我需要一个PHP变量.
那么如何定义一个包含大量JavaScript代码导致问题的PHP变量呢?
有没有像if/endif这样的方法?
<?php if (condition): ?>
html code...
<?php endif ?>
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个简单的bash脚本,将多行输出打印到另一个文件.我是通过heredoc格式来做的:
#!/bin/sh
echo "Hello!"
cat <<EOF > ~/Desktop/what.txt
a=`echo $1 | awk -F. '{print $NF}'`
b=`echo $2 | tr '[:upper:]' '[:lower:]'`
EOF
Run Code Online (Sandbox Code Playgroud)
我期待在桌面上看到包含以下内容的文件:
a=`echo $1 | awk -F. '{print $NF}'`
b=`echo $2 | tr '[:upper:]' '[:lower:]'`
Run Code Online (Sandbox Code Playgroud)
但相反,我看到这些作为我的what.txt文件的内容:
a=
b=
Run Code Online (Sandbox Code Playgroud)
不知何故,即使它是a的一部分heredoc,bash也试图逐行执行它.如何防止这种情况,并将内容按原样打印到文件中?
我想知道是否有任何方法可以在后台以heredoc格式运行脚本?
#!/bin/bash
python <<EOF
import time
time.sleep(2)
print "AAA"
EOF # placing "&" here doesn't work
echo "Hello"
Run Code Online (Sandbox Code Playgroud)
我知道我可以将它写入文件然后运行它,python foo.py &但这不是问题的关键.
我目前正在通过Ubuntu 16的终端学习Unix bash。我正在编写一个简单的脚本,因此我可以练习为Unix编写代码。这是代码示例:
report_uptime(){
cat << _EOF_
<H2>System Uptime</H2>
<PRE>$(uptime)</PRE>
_EOF_
return
}
Run Code Online (Sandbox Code Playgroud)
这段代码不起作用,原因是因为在cat之后,我应该使用<<-而不是<<。有时<<有效。那么,我什么<<时候应该使用<<-?什么时候应该使用?
这有效:
report_uptime(){
cat <<- _EOF_
<H2>System Uptime</H2>
<PRE>$(uptime)</PRE>
_EOF_
return
}
Run Code Online (Sandbox Code Playgroud)