按值访问数组元素

时间:2010-06-17 17:06:28

标签: php

   array(
  [0]
      name => 'joe'
      size => 'large'
  [1] 
      name => 'bill'
      size => 'small'

我认为我很厚,但是如果我知道其中一个键的值,要获取数组元素的属性,我首先遍历元素以找到正确的元素。

foreach($array as $item){
   if ($item['name'] == 'joe'){
      #operations on $item
   }
}

我知道这可能非常糟糕,但我相当新,我正在寻找一种直接按值访问此元素的方法。或者我需要钥匙?

谢谢, 布兰登

4 个答案:

答案 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循环。它与其他方法之间没有太大的区别 - 数组总是线性遍历。也就是说,您可以使用这些函数来查找具有特定值的数组对: