我在PHP数组下面:
Array (
[0] => Array ( [policy_id] => 1 [category_id] => 5 [limit_amount] => 11.00 [limit_amount2] => 23.00 ),
[1] => Array ( [policy_id] => 1 [category_id] => 7 [limit_amount] => 32.00 [limit_amount2] => 23.00 ),
[2] => Array ( [policy_id] => 1 [category_id] => 4 [limit_amount] => 12.00 [limit_amount2] => 12.00 ) )
现在我想做两件事:
category_id = 7
,以及是否存在。示例,如果category_id = 7
在数组中,则应输出
Array ([policy_id] => 1 ,
[category_id] => 7 ,
[limit_amount] => 32.00,
[limit_amount2] => 23.00 )
我尝试使用in_array(
),但无法获得所需的值,
感谢您的帮助,
答案 0 :(得分:5)
您可以在执行array_search
之前使用array_column
(我假设您的数据位于$array
中):
$match = $array[array_search(7, array_column($array, "category_id"))];
如果您需要首先检查条目是否确实存在,那么首先检查array_search
的返回值,并在找不到值时返回一些区别对象,例如: false
:
$index = array_search(7, array_column($array, "category_id"));
$match = $index === false ? false : $array[$index];
答案 1 :(得分:1)
有多种方法可以实现您的目标。这是一个使用array_filter()
的解决方案:
$input = array(
array('policy_id' => 1 , 'category_id' => 5 , 'limit_amount' => 11.00 , 'limit_amount2' => 23.00, ),
array('policy_id' => 1 , 'category_id' => 7 , 'limit_amount' => 32.00 , 'limit_amount2' => 23.00, ),
array('policy_id' => 1 , 'category_id' => 4 , 'limit_amount' => 12.00 , 'limit_amount2' => 12.00, ),
);
$categoryId = 7;
$output = array_filter(
$input,
function (array $item) use ($categoryId) {
return $item['category_id'] == $categoryId;
}
);
print_r($output);
输出结果为:
Array
(
[1] => Array
(
[policy_id] => 1
[category_id] => 7
[limit_amount] => 32
[limit_amount2] => 23
)
)
上面的代码会找到$input
中7
category_id
$input
的所有条目,这些条目与$output
中的原始密钥相关联。
您可以使用foreach ($output as item) { ... }
枚举print_r(current($output));
,或者,如果您只需要第一个匹配,则可以使用current()
来获取它:
Array
(
[policy_id] => 1
[category_id] => 7
[limit_amount] => 32
[limit_amount2] => 23
)
产生
$categoryId = 1;
<强>更新强>
如果在输入列表中找不到该项(f.e。$output
时),array()
是一个空数组(foreach
)。它仍然可以使用current($output)
进行枚举,但FALSE
会返回$categoryId = 7;
$output = current(array_filter(
$input,
function (array $item) use ($categoryId) {
return $item['category_id'] == $categoryId;
}
));
。
总而言之,代码:
$output
将FALSE
放入找到的第一个项目,如果没有,则放入Sub foo()
Dim pt As PivotTable
Dim cf As CubeField
Set pt = ActiveSheet.PivotTables("Tb1")
For Each cf In pt.CubeFields
If cf.Orientation = xlColumnField Then cf.Orientation = xlHidden
Next cf
End Sub
。
答案 2 :(得分:0)
有了这个问题,你可以使用foreach
数组来检查它是否存在!
我已经为此做了一个功能:
function checkArray($cat_id){
foreach($arr as $index => $value){
if($value->category_id == $cat_id){
return $arr[$index];
}
return false;
}
}
如果$cat_id
存在,则返回数组需要,如果不存在则返回false
答案 3 :(得分:0)
$val = 7;
$key = 'category_id';
foreach ($array as $item){
if (isset($item[$key]) && $item[$key] === $val)
print_r($item);
}