我的初始数组是
$employees = array(
array('name' => 'jack',
'area' => 'crafts'),
array('name' => 'janet',
'area' => 'aquatics'),
array('name' => 'brad',
'area' => 'crafts')
);
我正在尝试根据另一个数组的搜索结果创建一个新数组,因此如果我搜索'crafts',新数组应该如下所示:
$employees2 = array(
array('name' => 'jack',
'area' => 'crafts'),
array('name' => 'brad',
'area' => 'crafts')
);
我能做的最简单的解决方案是获得这个新结果。
答案 0 :(得分:0)
试试这个:
$employees = array(
array('name' => 'jack',
'area' => 'crafts'),
array('name' => 'janet',
'area' => 'aquatics'),
array('name' => 'brad',
'area' => 'crafts')
);
$employees2 = array();
foreach ($employees as $key) {
if($key['name'] == "jack")
{
array_push($employees2,array('name'=>$key['name'],'area'=>$key['area']));
}
}
var_dump($employees2);
array_push完成所有技巧;)
Saludos。
答案 1 :(得分:0)
foreach($employees as $key => $value){
if($value['area']=='crafts'){
$employees2[] = $value;
}
}
这非常简单地遍历第一个数组并检查内部数组中“area”的值。如果该值等于“crafts”,则可以将其放入一个名为$ employees2的新数组中。如果您想自定义密钥,您可以将工艺品更改为您想要的任何内容,并在employees [2]中添加您想要的任何内容。
答案 2 :(得分:0)
您可以使用实用程序带库Underscore.php(http://brianhaveri.github.com/Underscore.php/)
来简化语法(但不是algorythmic复杂性)有许多阵列 - “拔除”方法可以节省你编写循环的需要,但在引擎盖下它的功能与上面的答案中描述的大致相同。
答案 3 :(得分:0)
我将假设可能的结果集可能很大。在这种情况下,您可能希望使用尽可能少的额外内存来处理数组。为此,我建议通过引用迭代数组并取消设置与您的条件不匹配的项目。可能比创建新数组以存储与过滤器匹配的项目的开销更小。然后,您可以检查数组是否为空,以确定过滤器是否返回任何结果。像这样:
<?php
// maybe this will be set through an option from the UI
$area_filter = 'crafts';
// fetched results
$employees = array(
array('name' => 'jack',
'area' => 'crafts'),
array('name' => 'janet',
'area' => 'aquatics'),
array('name' => 'brad',
'area' => 'crafts')
);
// filter out the items that match your filter
foreach($employees as $i => &$employee){
if($employee['area'] != $area_filter){
unset($employees[$i]);
}
}
// do something with the results
if(!empty($employees)){
print_r($employees);
} else {
echo "Sorry, your filter '$area_filter' did not match any results\n";
}
?>
答案 4 :(得分:0)
试试这个:
$employees = array(
array('name' => 'jack',
'area' => 'crafts'),
array('name' => 'janet',
'area' => 'aquatics'),
array('name' => 'brad',
'area' => 'crafts')
);
$employees = array_filter($employees, function($employee) {
return ($employee['area'] == 'crafts' );
});
echo "<pre>";
print_r($employees);