代码之家  ›  专栏  ›  技术社区  ›  Brandon Frohbieter

按值访问数组元素

php
  •  3
  • Brandon Frohbieter  · 技术社区  · 15 年前
       array(
      [0]
          name => 'joe'
          size => 'large'
      [1] 
          name => 'bill'
          size => 'small'
    

    我想我是太厚了,但是为了得到数组元素的属性,如果我知道其中一个键的值,我首先循环遍历元素以找到正确的一个。

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

    我知道这可能很差,但我是一个相当新的,正在寻找一种方法来直接通过值访问这个元素。或者我需要钥匙?

    布兰登

    4 回复  |  直到 15 年前
        1
  •  2
  •   Wrikken    15 年前

    如果搜索 准确的 同一个数组,它将工作,而不是它。在它中有其他值:

    <?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
  •  2
  •   Sarfraz    15 年前

    尝试 array_search

    $key = array_search('joe', $array);
    echo $array[$key];
    
        3
  •  0
  •   Pete    15 年前

    名称在数组中是唯一的,最好是:

     array(
     'joe'=> 'large',
     'bill'=> 'small'
     );
    

    具有多个属性:

     array(
     'joe'=>array('size'=>'large', 'age'=>32),
     'bill'=>array('size'=>'small', 'age'=>43)
     );
    

    尽管在这里您可能需要考虑一种更面向对象的方法。

    如果必须使用数字键,请查看 array_search

        4
  •  0
  •   Artefacto    15 年前