如何在foreach循环中选择“子数组”

时间:2013-12-09 13:49:14

标签: php arrays foreach

我有一个数组数组

$person = array(2) {
      [billy]=>
        array(3) {
          ["height"]=>
          string(60) "tall"
          ["build"]=>
          string(7) "slim"
         ["attractiveness"]=>
         string(7) "extremely"
      }
    [carl]=>
      array(3) {
        ["height"]=>
        string(60) "short"
        ["build"]=>
        string(7) "chubby"
        ["attractiveness"]=>
        string(7) "neglegible"
   }

不幸的是,对于卡尔来说,对他没有任何兴趣。相反,比利非常需要,人们希望看到比利的细节。

所以我想遍历数组并只返回Billy的信息。

function findHotty($billy){
   foreach ( $person as $meat)
   {
      // wizardry 
      return onlyBilly
   }
}

我希望在功能中传递子阵列的名称,所以如果明天卡尔风靡一时 - 他有一定的无可否认的魅力 - 当我称之为方法时我可以通过它卡尔并且它寻找他的子阵列。 我希望这很清楚!

3 个答案:

答案 0 :(得分:4)

不需要任何循环,尽管您应该实现某种错误检查以确保人员数组中存在该名称。

function findHotty($name) {
    if (!isset($person[$name])) {
        // do something when the name doesn't exist
    }
    return $person[$name];
}

答案 1 :(得分:3)

您可以尝试以下方法: -

function findHotty($billy){
   foreach ( $person as $key => $meat)
   {
          if($key=='Billy')
          {
             $meat['..'];
          }
      // wizardry 
      return onlyBilly
   }
}

答案 2 :(得分:1)

以下是两种获取比利的方法。如果没有比利,这两个函数都会返回Billy的数据或者返回false。如果你的阵列中有两个Billy,那么你只会得到第一个。

<?php
$persons = array(
  'billy' => array(
    'height' => 'tall',
    'build' => 'slim',
    'attractiveness' => 'extremely'
  },
  'carl' => array(
    'height' => 'short',
    'build' => 'chubby',
    'attractiveness' => 'neglegible'
  )
);

function findHotty($billy){
  foreach ($persons as $name => $details)
    if($name == $billy){
      return $details;
    }
  }

  return false;
};

function findHotty2($billy){
  return isset($persons[$billy]) ? $persons[$billy] : false;
};