如何使用PHP创建现有数组的子部分?

时间:2011-05-27 14:20:19

标签: php arrays

我知道这可能是一个非常简单的问题但是我已经四处查看了,大多数答案都与数组交叉相关,这不是我想要的。

示例:

我有一个数组($ rows)。运行print_r($rows)时,我得到:

Array (
  [0] => Array (
    [id] => 184
    [0] => 184
    [name] => Advantage Membership
    [1] => Advantage Membership
    [flag] => 4
    [2] => 4
  )
  [1] => Array (
    [id] => 238
    [0] => 238
    [programname] => Package 2
    [1] => Package 2
    [flag] => 5
    [2] => 5
  )
) 

我想基本上创建一个'sub'数组,其中包含$ rows数组中的所有'flag'字段,这样我就能用另一个值做if(in_array())语句。

理想的结果数组看起来像:

$array2 = array( '4', '5' )

然后我可以运行以下内容并感到高兴:

if (in_array(4, $array2)) ...

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

自定义功能出了什么问题?

function in_sub_array($needle, $ary){
  foreach ($ary as $a){
    if (isset($a['flag']) && $a['flag'] == $needle) // could use ===, too.
      return true;
  }
  return false;
}

if (in_sub_arry(4,$array2)) ...

或者,正如其他人所建议的那样,array_map是一个不错的选择。

function get_flags($ary){
  return (isset($ary['flag']) ? $ary['flag'] : null);
}

if (in_array(4,array_map('get_flags',$array2))) ...

<强> demos of both methods

答案 1 :(得分:1)

function flagit($n)
{
    return $n['flag'];
}

$flags = array_map("flagit", $array);