用PHP实现多维数组及其子数组中的循环
我有以下数组:用PHP实现多维数组及其子数组中的循环,php,arrays,Php,Arrays,我有以下数组: $items = array( array( 'name' => 'Item 1', 'desc' => 'Lorem ipsum...', 'rates' => array( 'Yes' => 50, 'No' => 75 ) ), array( 'name' => 'Item 2',
$items = array(
array(
'name' => 'Item 1',
'desc' => 'Lorem ipsum...',
'rates' => array(
'Yes' => 50,
'No' => 75
)
),
array(
'name' => 'Item 2',
'desc' => 'Lorem ipsum...',
'rates' => array(
'Yes' => 50,
'No' => 0
)
)
);
如何在费率之间循环
以下是我所尝试的:
foreach ($items as $item) {
foreach($item['rates'] as $rate => $value){
echo $rate['rates'];
}
}
谢谢。foreach($items作为$item){
foreach ($items as $item) {
foreach($item['rates'] as $rate => $value){
echo 'Rate is ' . $rate . '; value is ' . $value . '<br />';
}
}
foreach($item['rates']为$rate=>$value){
回显“速率为“.$Rate.”;值为“.$value”。
;
}
}
将代码更改为
foreach ($items as $item) {
foreach($item['rates'] as $rate => $value){
echo $value;echo '<br/>';
}
}
foreach($items作为$item){
foreach($item['rates']为$rate=>$value){
echo$value;echo“
”;
}
}
在第二个循环中,$rate
是键,$value
具有该键的当前值。要保留(并继续)您的工作:
foreach ($items as $item) {
echo "Number of ratings for item: {$item['name']}<br/>";
foreach($item['rates'] as $rateKey => $rateValue) {
echo " - {$rateKey}: {$rateValue}<br/>";
}
}
循环中的循环比循环慢得多,只有当循环的数组变大时,它才会变得明显。因此,您可以采取以下一种方法:
$items = array(
array(
'name' => 'Item 1',
'desc' => 'Lorem ipsum text',
'rates' => array(
'Yes' => 50,
'No' => 75
)
),
array(
'name' => 'Item 2',
'desc' => 'Lorem ipsum text',
'rates' => array(
'Yes' => 50,
'No' => 0
)
)
);
$rates = array_column($items, 'rates');
foreach($rates as $key => $value) {
if($value['Yes']) {
echo " Yes: {$value['Yes']}<br/>";
}
echo " No: {$value['No']}<br/><br/>";
}
第一个变量始终是键,因此不能将其用作数组。在第二个循环中,您已经循环了rates
的值,因此$rate
将是Yes/No,而$value将是与该键关联的值。虽然这可能会回答问题,但仅代码的答案通常被视为低质量。提供更多关于为什么会提高这个答案质量的描述和上下文。谢谢
$items = array(
array(
'name' => 'Item 1',
'desc' => 'Lorem ipsum text',
'rates' => array(
'Yes' => 50,
'No' => 75
)
),
array(
'name' => 'Item 2',
'desc' => 'Lorem ipsum text',
'rates' => array(
'Yes' => 50,
'No' => 0
)
)
);
$rates = array_column($items, 'rates');
foreach($rates as $key => $value) {
if($value['Yes']) {
echo " Yes: {$value['Yes']}<br/>";
}
echo " No: {$value['No']}<br/><br/>";
}
Yes: 50
No: 75
Yes: 50
No: 0