$array = (
array('1231415'=>array('foo'=>'bar', 'test'=> 1)),
array('32434'=>array('foo'=>'bar', 'test'=> '0')),
array('123244'=>array('foo'=>'bar', 'test'=> 0)),
array('193928'=>array('foo'=>'bar', 'test'=> 1))
);
我有一个包含(许多)随机密钥的数组,ID号。如果'test'= 1,我需要测试每个数组,所以我做了一个foreach
循环。
foreach ($array as $sub) {
if ($sub['test'] == '1' ) {
echo 'User: ' . $sub . ' has test = 1';
}
}
这样可行,但它返回'User:Array has test = 1'
我到底如何获得哪个ID号(该随机数)中的test = 1?
我尝试过$array as $sub=>$value
,但由于某种原因,它只会使foreach
无效。谢谢!
答案 0 :(得分:11)
请改用此foreach
语法:
foreach ($array as $key => $sub) {
if ($sub['test'] == '1' ) {
echo 'User: ' . $key . ' has test = 1';
}
}
这假定数据采用以下形式:
$array = array(
'1234' => array('test' => 1),
'5678' => array('test' => 2)
);
如果您需要保持现在的数据,则需要使用更多类似的内容:
foreach ($array as $item) {
list($key, $info) = $item;
if ($info['test'] == 1) {
echo 'User: ' . $key . ' has test = 1';
}
}
答案 1 :(得分:3)
您的代码有两个问题。
1)你的数组声明有些混乱。试试这个:
$array = array(
'1231415'=>array('foo'=>'bar', 'test'=> 1),
'32434'=>array('foo'=>'bar', 'test'=> 0),
'123244'=>array('foo'=>'bar', 'test'=> 0),
'193928'=>array('foo'=>'bar', 'test'=> 1)
);
2)在foreach
中,您丢失了ID密钥。试试这个:
foreach ($array as $id => $sub) {
if ($sub['test'] == 1) {
echo "User: " . $id . " has test = 1\n";
}
}
在我的测试中,上述输出:
User: 1231415 has test = 1
User: 193928 has test = 1