我知道这可能是一个非常简单的问题但是我已经四处查看了,大多数答案都与数组交叉相关,这不是我想要的。
示例:
我有一个数组($ 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)) ...
有什么建议吗?
答案 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);