[英]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
将始终是percent
和description
的字符串值。
在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.