繁体   English   中英

回显PHP数组只显示每个值的第一个字母

[英]Echoing a PHP array is only displaying the first letter of each value

这是一个简单的评级系统。 有3个值包含一个百分比,附带说明/名称。 我只想显示描述/名称。

出于某种原因,它显示:

一个

Ť

一世

这是我的脚本:

if(isset($_POST['analyze'])) {

    // get total value of "Time Management" section
    for($i = 0; $i < 19; $i++) {
        $time_management_total += $_POST["time_management_Q$i"];
    }


    // get total value of "Attract Clients" section
    for($i = 0; $i < 16; $i++) {
        $attract_clients_total += $_POST["attract_clients_Q$i"];
    }

    // get total value of "Internet Marketing" section
    for($i = 0; $i < 21; $i++) {
        $internet_marketing_total += $_POST["internet_marketing_Q$i"];
    }


    // calculate user's personal "Time Management" score
    $time_management_rating = ($time_management_total / 19) / 5;

    // calculate user's personal "Attract Clients" score
    $attract_clients_rating = ($attract_clients_total / 16) / 5;

    // calculate user's personal "Internet Marketing" score
    $internet_marketing_rating = ($internet_marketing_total / 21) / 5;


    // add user ratings to array
    $user_rating[0] = array('percent' => $time_management_rating, 'description' => 'Time Management');
    $user_rating[1] = array('percent' => $attract_clients_rating, 'description' => 'Attract Clients');
    $user_rating[2] = array('percent' => $internet_marketing_rating, 'description' => 'Internet Marketing');


    // reverse sort the array - highest percentage first
    rsort($user_rating);


    // echo the description
    foreach($user_rating as $category) {
        foreach($category as $description) {
            echo $description[description] . "<br />";
        }
    }
}
?>

你必须做:

foreach($user_rating as $category) {
        echo $category['description'] . "<br />";
}

您的代码说明:

你的阵列就像

$user_rating = array(array('percent' => ..., 'description' => ...), array(...));

这意味着你有一个二维数组。

当你做foreach($user_rating as $category) ,你正在遍历外部数组。 这意味着$category将是一个数组,即array('percent' => ..., 'description' => ...)

现在你犯了错误,再次遍历那个数组,这意味着$description将始终是percentdescription的字符串值。

在PHP中,您可以使用数组表示法访问字符串以获取该位置的字符。 由于description未定义,它可能会解析为0并且您获得第一个字符。

$foo = 'bar';
echo $foo[0];
// echos 'b'

通过添加一些echo ,您可以看到循环中的哪个元素包含哪个值:

$user_rating[0] = array('description' => 'Time Management');
$user_rating[1] = array('description' => 'Attract Clients');
$user_rating[2] = array('description' => 'Internet Marketing');

foreach($user_rating as $category) {
    echo '$category: ' . $category . PHP_EOL;
    foreach($category as $description) {
        echo '$description: '. $description . PHP_EOL;
        echo $description[description] . "<br />" .PHP_EOL;
    }
}

$category: Array
$description: Time Management
T<br />
$category: Array
$description: Attract Clients
A<br />
$category: Array
$description: Internet Marketing
I<br />

更改

echo $description[description]

echo $description['description']

尝试

foreach($user_rating as $category) {
            echo $category['description'] . "<br />";
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM