打印不带 var_dump() 提供的元数据前缀的计算总和

问题描述 投票:0回答:6

我有这段代码,它计算字符串中“字母数字”的总和,但其输出是:

int(64)
64
T
(20)、
E
(2)、
S
(19)、
T
(20) -->
20+5+19+20=64
的总和。

我只想要数字作为输出

64
而不是
int(64)

这是代码:

$data = "test";
$testResult = array_values(
    array_merge(
        array_fill_keys(
            range('A','Z'),
            0
        ),
        array_count_values(
            str_split(
                strtoupper($data)
            )
        )
    )
);
$wordCount = 0;
foreach ($testResult as $letterValue => $letterCount) {
    $wordCount += ++$letterValue * $letterCount;
}
var_dump($wordCount);
php sum integer output
6个回答
2
投票

int(64)
var_dump()
DOCs
的一项功能。只需
echo
变量,您就应该得到正常的数字输出。


0
投票
echo $wordCount;

而不是

var_dump($wordCount);

0
投票

var_dump 为您提供有关变量的所有信息,(int) 让您知道它是一个整数,如果您只是回显它,您将看不到 (int)。


0
投票

PHP 函数 var_dump() 除了变量值之外还显示变量及其类型的结构化信息。您只需 echoprint() 变量即可。


0
投票

您需要使用 echo 而不是 var_dump。 Var_dump 为您提供有关变量的附加信息。如果 $wordCount 是一个数组而不是一个 int,它将显示 Array(size){values...}

阅读 vardump 手册这里

我希望这能解决您的问题。 问候, 斯特凡


0
投票

关于您的实际脚本,可以通过将每个字母的

ord()
值相加来简化(小于96,因为小写字母在Ascii表上是从97开始)。我的脚本假设仅使用单字节小写字母作为输入。

代码:(演示

$data = "test";
echo array_reduce(
         str_split($data),
         fn($sum, $char) => $sum + ord($char) - 96,
     );
// outputs: 64

除了该片段之外,

var_dump()
的输出还包括有关该值的元数据。

您可以选择多种函数和语言结构来呈现您的数据。重要的是要记住,虽然技术有细微的行为,但如果您将数据打印到文档(html、txt 或其他内容),则需要将非平面数据类型转换为平面数据类型。请注意,在下面的演示中,某些数据类型在打印时显示不同或根本不显示。对于非扁平数据,我的演示会将数据编码为 JSON 字符串,但有不同的方法可以生成扁平值。

代码:(演示

$tests = [
    'false' => false,
    'true' => true,
    'null' => null,
    '0' => 0,
    '0.1' => 0.1,
    'a' => 'a',
    '[\'foo\']' => ['foo'],
    '(object) [\'bar\', \'bar\']' => (object) ['bar', 'bar'],
];

echo "<table border=1>";
    echo '<tr><th>input</th><th>echo</th><th>printf</th><th>print_r</th><th>var_export</th><th>var_dump</th></tr>';
    foreach ($tests as $input => $test) {
        echo "<tr>";
        echo "<th>$input</th><td>";
        echo is_array($test) || is_object($test) ? json_encode($test) : $test;
        echo "</td><td>";
        printf('%s', is_array($test) || is_object($test) ? json_encode($test) : $test);
        echo "</td><td>";
        print_r($test);
        echo "</td><td>";
        var_export($test);
        echo "</td><td>";
        var_dump($test);
        echo "</td></tr>";
    }
echo "</table>";

© www.soinside.com 2019 - 2024. All rights reserved.