PHP:打印有序数组



我有一个简单的PHP代码,其中数组中的值从最大到最小排序。

我需要它们像带有循环的基本HTML值一样打印

我的代码:

$kosik = [
[
"typ" => "ovocna",
"amount" => $ovocnaNUM
],
[
"typ" => "slana",
"amount" => $slanaNUM,
],
[
"typ" => "sladka",
"amount" => $sladkaNUM
]
];
usort($kosik, function ($a, $b) {
return $b["amount"] - $a["amount"];
});

我需要回应它们,但当我使用它时,我得到了错误

foreach($kosik as $key => $value) {
echo "$key - $value <br>";
}

错误:数组到字符串的转换

但当我使用这个:

foreach($kosik[0] as $key => $value) {
echo "$key - $value <br>";
}

我没有错误,但只打印了第一个值。

是否有任何选项可以使用foreach或循环打印所有值,就像在上面的代码中打印一个值一样?

一种方法,只需使用$value数组的成员对其进行寻址

foreach($kosik as $key => $value) { 
echo "$key - $value[typ], $value[amount] <br>";  
}

注意,在双引号字符串中,您对数组的寻址略有不同,您不会在出现名称周围使用引号。

可能更灵活地使用双循环,特别是如果你不知道或不能保证这种情况总是存在

$str = '';
foreach($kosik as $key => $value) { 
$str .= "$key - ";
foreach ( $value as $val ) {
$str .= "$val, ";
}
$str = rtrim($str, ', ');  remove trailing comma
$str .= '<br>';
}

这是脚本的结果:

Array ( [0] => Array ( [typ] => ovocna [amount] => ) [1] => Array ( [typ] => slana [amount] => ) [2] => Array ( [typ] => sladka [amount] => ) ) 

错误在于您在foreach循环中使用的$value是一个数组,因此您不能使用echo函数。要访问"typ"one_answers"amount"的值,必须使用以下形式$value["typ"]和$value["mount"]。

最新更新