$arr_ramones = array(
1=>array('name'=>'johnny', 'display'=>1),
2=>array('name'=>'joey', 'display'=>1),
3=>array('name'=>'cj', 'display'=>0),
4=>array('name'=>'deedee', 'display'=>1),
5=>array('name'=>'marky', 'display'=>0)
);
我想循环播放我的数组,但只能使用显示值为1的行。
我了解了如何使用regular array执行此操作。是否可以使用多维数组完成类似的操作而不会降低性能?我的示例数组很小 - 真实世界的示例包含数千个值。
答案 0 :(得分:1)
试试:
foreach ($arr_ramones as $item) {
if ($item['display']) {
echo $item['name'];
}
}
或使用array_filter
$display = array_filter($arr_ramones, function($item){
return $item['display'];
});
foreach ($display as $item) {
echo $item['name'];
}
答案 1 :(得分:1)
如果您只想显示数据而不创建新数组,请尝试array_walk。如果要创建数组,请使用array_map
array_walk($arr_ramones, function($a) { // displaying information from array based on requirements
if ( $a['display'] == 1) {
echo $a['name'] . " "; // johnny joey deedee
}
});
$n = array_map(function($a) { // creating new array based on requirements
if ( $a['display'] == 1) {
return $a['name'];
}
}, $arr_ramones);
答案 2 :(得分:1)
也适用于array_filter。
$arr_ramones = array(
1 => array('name'=>'johnny', 'display'=>1),
2 => array('name'=>'joey', 'display'=>1),
3 => array('name'=>'cj', 'display'=>0),
4 => array('name'=>'deedee', 'display'=>1),
5 => array('name'=>'marky', 'display'=>0)
);
$filter = array_filter($arr_ramones, function($arr) {
return $arr['display'] == 1;
});
答案 3 :(得分:0)
像这样的简单foreach
。
foreach($arr as $k=>$arr)
{
if($arr['display']==1)
{
echo $arr['name']."<br>";
}
}
使用array_filter
function filt($var)
{
return $var['display']==1;
}
$new_arr=array_filter ($arr_ramones,"filt" );
print_r($new_arr);