array(
[0]
name => 'joe'
size => 'large'
[1]
name => 'bill'
size => 'small'
)
我认为我很厚,但是如果我知道其中一个键的值,要获取数组元素的属性,我首先遍历元素以找到正确的元素。
foreach($array as $item){
if ($item['name'] == 'joe'){
#operations on $item
}
}
我知道这可能非常糟糕,但我相当新,我正在寻找一种直接按值访问此元素的方法。或者我需要钥匙?
谢谢, 布兰登
答案 0 :(得分:2)
尝试 array_search
$key = array_search('joe', $array);
echo $array[$key];
答案 1 :(得分:2)
如果搜索完全相同的数组,它将起作用,而不是你有其他值:
<?php
$arr = array(
array('name'=>'joe'),
array('name'=>'bob'));
var_dump(array_search(array('name'=>'bob'),$arr));
//works: int(1)
$arr = array(
array('name'=>'joe','a'=>'b'),
array('name'=>'bob','c'=>'d'));
var_dump(array_search(array('name'=>'bob'),$arr));
//fails: bool(false)
?>
如果还有其他键,则没有其他方法可以循环播放。如果您只需要按名称查找它们,并且名称是唯一的,请考虑在创建阵列时将它们用作键:
<?php
$arr = array(
'joe' => array('name'=>'joe','a'=>'b'),
'bob' => array('name'=>'bob','c'=>'d'));
$arr['joe']['a'] = 'bbb';
?>
答案 2 :(得分:0)
如果您需要对名称进行操作,和名称在您的数组中是唯一的,那就更好了:
array(
'joe'=> 'large',
'bill'=> 'small'
);
具有多个属性:
array(
'joe'=>array('size'=>'large', 'age'=>32),
'bill'=>array('size'=>'small', 'age'=>43)
);
虽然在这里你可能想要考虑更多的OOP方法。
如果您必须使用数字键,请查看array_search
答案 3 :(得分:0)
你可以坚持你的for循环。它与其他方法之间没有太大的区别 - 数组总是线性遍历。也就是说,您可以使用这些函数来查找具有特定值的数组对: