我想我在这里遗漏了一些非常明显的东西,但有人可以向我解释为什么我得到输出而不是我期望在以下var转储上的输出:
这是原始的xml:
<result>
<category>
<id>3</id>
<name>Category 1</name>
<subcategory>
<id>9</id>
<name>SubCat 1</name>
</subcategory>
<subcategory>
<id>10</id>
<name>SubCat 2</name>
</subcategory>
<subcategory>
<id>11</id>
<name>SubCat 3</name>
</subcategory>
</category>
</result>
Run Code Online (Sandbox Code Playgroud)
我在做什么:
$xml = new SimpleXMLElement($file);
foreach($xml->category as $node)
{
echo "dump 1:
";
var_dump($node);
echo "**********************************************
dump 2:
";
var_dump($node->subcategory);
die();
}
Run Code Online (Sandbox Code Playgroud)
这输出:
dump 1:
object(SimpleXMLElement)#130 (3) {
["id"]=>
string(1) "3"
["name"]=>
string(10) "Category 1"
["subcategory"]=>
array(3) {
[0]=>
object(SimpleXMLElement)#133 (2) {
["id"]=>
string(1) "9"
["name"]=>
string(8) "SubCat 1"
}
[1]=>
object(SimpleXMLElement)#135 (2) {
["id"]=>
string(2) …Run Code Online (Sandbox Code Playgroud) 在开发东西时我需要输出某个实例的状态才能检查它.
使用CakePHP时,我总是有一个debug()函数,它在<pre> html元素中执行某种var_dump,因此内容是可读的.
在Symfony 2.x中也有类似的东西吗?
我正在尝试查看查询返回的PDOStatement对象的结构:
$sql="SELECT co.CompanyId, co.Name, co.Address, co.City, co.State, ctry.NameEnglish, co.PostalCode FROM company AS co LEFT JOIN country AS ctry ON ctry.CountryId = co.CountryId ORDER BY Name;";
$result=$conn->query($sql);
Run Code Online (Sandbox Code Playgroud)
查询有效,因为我能够嵌套一些foreach语句并通过执行以下操作显示六行数据.
$firstRow=true;
echo '<table>';
foreach ($result as $rowId => $rowData) {
if ($firstRow) {
echo "<thead><tr><th>Row Number</th>";
foreach ($rowData as $fieldId => $fieldData) {
echo "<th>$fieldId</th>";
}
echo "</tr></thead>";
$firstRow=false;
}
echo "<tr><td>$rowId</td>";
foreach ($rowData as $fieldId => $fieldData) {
$fieldData=str_replace("\n","<br>",$fieldData);
echo "<td>$fieldData</td>";
}
echo "</tr>";
}
echo "</table>";
Run Code Online (Sandbox Code Playgroud)
但是我对这个对象的内部结构感到好奇$result,所以我 …
我有2个案例,其中空字节\0被附加到我的数据.
1.将对象存储到数组中
class myClass {
private $var;
function __construct() {}
}
$myObject = (array) new myClass();
var_dump(array_map("addslashes", array_keys($myObject)));
Run Code Online (Sandbox Code Playgroud)
输出:
array(1) { [0]=> string(14) "\0myClass\0var" }
Run Code Online (Sandbox Code Playgroud)
2.解密加密数据时:
function encrypt_data($data) {
return base64_encode(mcrypt_encrypt(MCRYPT_BLOWFISH , SALT , $data , MCRYPT_MODE_ECB));
}
function decrypt_data($data) {
$data = base64_decode($data);
return mcrypt_decrypt(MCRYPT_BLOWFISH , SALT , $data , MCRYPT_MODE_ECB);
}
$data = '12345678901234567 aasdasd';
$edata = encrypt_data($data);
var_dump(addslashes(decrypt_data($edata)));
Run Code Online (Sandbox Code Playgroud)
输出:
string(39) "12345678901234567 aasdasd\0\0\0\0\0\0\0"
Run Code Online (Sandbox Code Playgroud)
但\0如果没有addslashes功能,我永远不会注意到.为什么只是var_dump()不显示那些?var_dump("Hello\0 World");例如输出'Hello World'.在我看来,数据表示不好.据我所知,\0字节是C语言中char字符的结尾(PHP中的字符串),PHP是用C实现的.
我试图在symfony 4中使用var-dumper包中的精彩转储函数,由于某种原因我收到以下错误:
无法启动会话,因为标题已由第181行的"vendor\symfony\var-dumper\Dumper\AbstractDumper.php"发送.
此外,当我尝试在树枝模板中使用{%dump foo%}标记时,我收到一个错误:
未知的"转储"标签.
谁能帮我?
我已经在我的计算机上安装了xdebug和Windows,默认情况下工作正常 - 痕迹很丰富,很漂亮,但在另一台计算机上使用ubuntu 10.10,它是无色的,没有任何格式.我在php.ini中尝试填充xdebug格式化参数,但它对我不起作用:(
我需要做些什么来改善输出格式?
因为我正在使用json,而ajax是注释我没有在有效的json上传递值.
只是返回var dump的值而没有它回显,输出到浏览器.
例如
$data = 'my_data';
get_var_dump($data);//not real func
//should do nothing.
$get['data'] = get_var_dump($data);
$get['error']= false;
echo json_encode($get);
//should be something like
//{"data,"string(7) my_data","error":false}
Run Code Online (Sandbox Code Playgroud)
或者print_r等价物我只想分配给var而不是输出它.
或者如果你是一个wordpress粉丝,bloginfo('url')之间的区别; 和get_bloginfo('url'); 应该让它更容易:)
我正在努力使用API获取一些歌词,并将歌词字符串转换为单词数组.我在preg_replace函数中得到了一些不寻常的行为.当我使用var_dump进行一些调试时,我看到var_dump为字符串"you"返回值10,这告诉我可能有错误.之后,preg_replace很奇怪.
这是我的代码:
$source = get_chart_lyrics_data("madonna","frozen");
$pieces = explode("\n", $source);
$lyrics = array();
for($i=0;$i<count($pieces);$i++){
if($i>10){
$words = explode(" ",$pieces[$i]);
foreach($words as $_word){
if($_word=="")
continue;
var_dump($_word);
$word = strtolower($_word);
var_dump($word);
$word = trim($word);
var_dump($word);
$word = preg_replace("/[^A-Za-z ]/", '', $word);
var_dump($word);
$lyrics[$word]++;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是此代码返回的前4行:
string(10) “You”
string(10) “you”
string(10) “you”
string(8) “lyricyou”
Run Code Online (Sandbox Code Playgroud)
为什么var_dump为"你"返回值10?为什么preg_replace就是这样的呢?
谢谢.
我正在使用Ubuntu和PHP 7.
PHP 7.0.5-3+donate.sury.org~xenial+1 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
with Xdebug v2.4.0, Copyright (c) 2002-2016, by Derick Rethans
Run Code Online (Sandbox Code Playgroud)
当我通过使用var_dump显示一些变量来调试PHP脚本时:
<?php
var_dump('tmp string');
var_dump(true);
Run Code Online (Sandbox Code Playgroud)
以下是其输出:
/var/www/example.com/test.php:3:string 'tmp string' (length=10)
/var/www/example.com/test.php:4:boolean true
Run Code Online (Sandbox Code Playgroud)
为什么它总是以前用文件路径输出?
我希望它输出如下:
string 'tmp string' (length=10)
boolean true
Run Code Online (Sandbox Code Playgroud)